如何加速熊猫循环



此代码循环访问由 ~1400 万行组成的巨型数据帧,其中每行都是一篇已发布的文章。我们的目标是查看all_keywords中的每个关键字(有 ~400 个关键字(,并找到关键字首次和最后一次出现的日期。

ranges = {}
for dk in all_keywords:
dk_df = df.loc[[(dk in map(str.lower, x)) for x in df['keywords']]]
first_appearance = dk_df['date'].iloc[0].strftime('%Y')
last_appearance = dk_df['date'].iloc[-1].strftime('%Y')
ranges[dk] = [first_appearance, last_appearance]

问题是这段代码太慢了。这需要几个小时。

怎么能更快?

我怀疑问题要么是遍历每个关键字,要么是将所有关键字映射到df['keywords']中的每个数组。

如果没有示例数据,我无法检查它,一般来说,裸循环不是使用数据帧的方式。在您的情况下,选择每个键groupby应该性能更高。

df.groupby('keywords').first()['date']
df.groupby('keywords').last()['date']

最新更新