it-swarm.com.de

Entfernen Sie die erste Anzahl von Zeichen aus jeder Zeile in einer Spalte eines Python-Datenrahmens

Ich habe einen Python-Datenrahmen mit etwa 1.500 Zeilen und 15 Spalten. Mit einer bestimmten Spalte möchte ich die ersten 3 Zeichen jeder Zeile entfernen. Ein einfaches Beispiel ist hier ein Datenrahmen:

import pandas as pd

d = {
    'Report Number':['8761234567', '8679876543','8994434555'],
    'Name'         :['George', 'Bill', 'Sally']
     }

d = pd.DataFrame(d)

Ich möchte die ersten drei Zeichen aus jedem Feld in der Report Number-Spalte von dataframe d entfernen.

12
d84_n1nj4

Verwenden Sie vektorisierte str -Methoden, um jeden String-Eintrag in Scheiben zu schneiden

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

Es ist erwähnenswert, dass Pandas "vektorisierte" str-Methoden nicht mehr als Python-Loops sind.

Unter der Annahme sauberer Daten wird ein Listenverständnis oft effizienter sein:

# 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

Beachten Sie, dass diese nicht gleichwertig sind, da das Listenverständnis sich nicht mit Nulldaten und anderen Edge-Fällen befasst. In diesen Situationen bevorzugen Sie möglicherweise die Pandas-Lösung.

0
jpp