[英]Slicing a column in a dataframe with varied number of characters in each row (Python)
[英]Remove first x number of characters from each row in a column of a Python dataframe
我有一個包含大約1,500行和15列的Python數據幀。 對於一個特定的列,我想刪除每行的前3個字符。 這里有一個簡單的例子是數據幀:
import pandas as pd
d = {
'Report Number':['8761234567', '8679876543','8994434555'],
'Name' :['George', 'Bill', 'Sally']
}
d = pd.DataFrame(d)
我想從數據框d
的Report Number
列中的每個字段中刪除前三個字符。
使用vectorised 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
請注意,這些不等效,因為列表推導不處理空數據和其他邊緣情況。 對於這些情況,您可能更喜歡Pandas解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.