从 Python 数据框的一列中的每一行中删除前 x 个字符
Posted
技术标签:
【中文标题】从 Python 数据框的一列中的每一行中删除前 x 个字符【英文标题】:Remove first x number of characters from each row in a column of a Python dataframe 【发布时间】:2017-07-10 00:40:25 【问题描述】:我有一个包含大约 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
列中每个字段的前三个字符。
【问题讨论】:
【参考方案1】:使用矢量化的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
【讨论】:
【参考方案2】:值得注意的是,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
请注意,这些不是等效的,因为列表推导不处理空数据和其他边缘情况。对于这些情况,您可能更喜欢 Pandas 解决方案。
【讨论】:
以上是关于从 Python 数据框的一列中的每一行中删除前 x 个字符的主要内容,如果未能解决你的问题,请参考以下文章