我有一个包含大约1,500行和15列的Python数据帧。对于一个特定的列,我想删除每行的前3个字符。这里有一个简单的例子是数据帧:
import pandas as pd
d = {
'Report Number':['8761234567', '8679876543','8994434555'],
'Name' :['George', 'Bill', 'Sally']
}
d = pd.DataFrame(d)
我想从数据框Report Number
的{{1}}列中的每个字段中删除前三个字符。
答案 0 :(得分:30)
使用向量化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
答案 1 :(得分:0)
值得注意的是,熊猫“矢量化” 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解决方案。