从Python数据框的列中的每一行中删除前x个字符

d84*_*nj4 19 python string replace dataframe pandas

我有一个包含大约1,500行和15列的Python数据帧.对于一个特定的列,我想删除每行的前3个字符.这里有一个简单的例子是数据帧:

import pandas as pd

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

d = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)

我想删除Report Number数据框列中每个字段的前三个字符d.

EdC*_*ica 39

使用向量化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
Run Code Online (Sandbox Code Playgroud)


jpp*_*jpp 7

值得注意的是,Pandas 的“向量化”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
Run Code Online (Sandbox Code Playgroud)

请注意,这些并不等效,因为列表理解不处理空数据和其他边缘情况。对于这些情况,您可能更喜欢 Pandas 解决方案。