【发布时间】:2019-10-23 21:28:10
【问题描述】:
我有一个数据集,其中包含超过 1 亿行,我试图在 pandas 中进行操作。我正在尝试根据b 和c 中的值分别作为起点和终点来分割a 中的字符串。
我可以像这样使用列表理解来做到这一点:
df['d'] = [a[1]['a'][a[1]['b']:a[1]['c']] for a in df.iterrows()]
这真的很慢。我可以用这样的申请做同样的事情:
df['d'] = df.apply(lambda x: x['a'][x['b']:x['c']],axis=1)
这也很慢。我的问题是,使用b 和c 中的值作为切片的开始和结束,对a 中的字符串进行切片的最有效方法是什么?
【问题讨论】:
-
这个有点难过。您可能可以使用开始和结束索引沿着 groupby 的路线走,并在每个组上工作,但是 pandas 中的许多
str方法真的很慢,所以我不确定它是否会比 @ 更好987654332@。你尝试过这样的事情吗? -
条件是什么?
-
@user3280146 ?他们只需要使用给定的索引对字符串进行切片。我想说这个问题很清楚。
-
它表示基于 b 和 c 的值。这是否意味着从“a”列开始,切片应该是 b 列和 c 列中的值之一。示例输出会更容易理解...
-
你说它很慢。 100 万行需要多少时间?我试图了解“慢”有多慢。它将帮助我们加快速度并比较发布的任何解决方案,因为人们大多无法访问 1 亿行数据。
标签: python pandas dataframe text-processing