web-dev-qa-db-fra.com

Supprime le premier nombre x de caractères de chaque ligne dans une colonne d'un cadre de données Python

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.

12
d84_n1nj4

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
23
EdChum

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.

0
jpp