Ответ 1
Использовать векторизованные методы str
для среза каждой записи строки
In [11]:
d['Report Number'] = d['Report Number'].str[3:]
d
Out[11]:
Name Report Number
0 George 1234567
1 Bill 9876543
2 Sally 4434555
У меня есть фреймворк Python с примерно 1500 рядами и 15 столбцами. С одним конкретным столбцом я хотел бы удалить первые 3 символа каждой строки. В качестве простого примера здесь приведен фрагмент данных:
import pandas as pd
d = {
'Report Number':['8761234567', '8679876543','8994434555'],
'Name' :['George', 'Bill', 'Sally']
}
d = pd.DataFrame(d)
Я хотел бы удалить первые три символа из каждого поля в столбце " Report Number
в dataframe d
.
Использовать векторизованные методы str
для среза каждой записи строки
In [11]:
d['Report Number'] = d['Report Number'].str[3:]
d
Out[11]:
Name Report Number
0 George 1234567
1 Bill 9876543
2 Sally 4434555
Стоит отметить, что "векторизованные" методы str
Pandas представляют собой не более чем циклы уровня Python.
Предполагая чистоту данных, вы часто найдете более понятным понимание списка:
# Python 3.6.0, Pandas 0.19.2
d = pd.concat([d]*10000, ignore_index=True)
%timeit d['Report Number'].str[3:] # 12.1 ms per loop
%timeit [i[3:] for i in d['Report Number']] # 5.78 ms per loop
Обратите внимание, что они не эквивалентны, так как понимание списка не имеет дело с нулевыми данными и другими граничными случаями. В этих ситуациях вы можете предпочесть решение Pandas.