我有一个数据集,有超过1亿行,我正试图在熊猫操作。我试图根据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
中的字符串进行切片的最有效方法是什么?你知道吗
Tags:
迭代
df.iterrows()
非常慢,因为它为每一行创建一个单独的pd.Series
对象。对于1亿行,这意味着1亿个这样的对象正在被创建(和丢弃)。最好是zip
列并在这样的理解中使用:这只会创建三个
Series
对象,然后对它们进行迭代,从而节省大量开销。你知道吗您还可以查看Numba,编写自己的函数,在数据帧上循环。你知道吗
相关问题 更多 >
编程相关推荐