Python約1,500行と15列のデータフレームがあります。特定の1列を使用して、各行の最初の3文字を削除します。簡単な例として、データフレームを示します。
import pandas as pd
d = {
'Report Number':['8761234567', '8679876543','8994434555'],
'Name' :['George', 'Bill', 'Sally']
}
d = pd.DataFrame(d)
データフレームd
のReport Number
列の各フィールドから最初の3文字を削除したいと思います。
ベクトル化された 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
Pandas "vectorised" str
メソッドは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
リストの内包表記ではnullデータやその他のEdgeのケースを処理しないため、これらは同等ではないことに注意してください。これらの状況では、Pandasソリューションを好むかもしれません。