J'ai un dataframe Python avec environ 1500 lignes et 15 colonnes. Avec une colonne spécifique, je voudrais supprimer les 3 premiers caractères de chaque ligne. À titre d’exemple simple, voici un cadre de données:
import pandas as pd
d = {
'Report Number':['8761234567', '8679876543','8994434555'],
'Name' :['George', 'Bill', 'Sally']
}
d = pd.DataFrame(d)
Je souhaite supprimer les trois premiers caractères de chaque champ de la colonne Report Number
de dataframe d
.
Utilisez les méthodes vectorisées str
pour découper chaque entrée de chaîne
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
Il est à noter que les méthodes str
"vectorisées" des Pandas ne sont rien de plus que des boucles au niveau Python.
En supposant que les données soient nettes, vous trouverez souvent une compréhension de liste plus efficace:
# 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
Notez que ceux-ci ne sont pas équivalents, car la compréhension de la liste ne traite pas les données nulles et les autres cas Edge. Pour ces situations, vous préférerez peut-être la solution Pandas.