如何加快熊猫循环

时间:2020-06-15 07:34:37

标签: python pandas optimization

此代码循环遍历约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']中的每个数组。

1 个答案:

答案 0 :(得分:0)

如果没有示例数据,我将无法检查它,通常,裸循环不是如何使用数据框。在您的情况下,groupby选择每个键的性能应该更高。

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