根据来自其他熊猫数据框的匹配列更新熊猫列的最快方法

时间:2020-10-12 01:12:11

标签: python pandas dataframe optimization

我有两个熊猫数据框,一个有更新后的值作为主要数据框的一部分值。主要的是〜2m行,要更新的列是〜20k。据我所知,此操作运行非常缓慢,据我所知,它低于O(m * n),有没有很好的方法对其进行矢量化或只是总体上提高了速度?我看不出有多少其他优化可以应用于这种情况。我还尝试过将'object_id'列作为索引,但这并没有导致速度的有意义的提高。

# df_primary this is 2m rows
# df_updated this is 20k rows

for idx, row in df_updated.iterrows():
    df_primary.loc[df_primary.object_id == row.object_id, ['status', 'category']] = [row.status, row.category]

2 个答案:

答案 0 :(得分:1)

让我们尝试DataFrame.update使用df_primary中的值来更新df_updated

df_primary = df_primary.set_index('object_id')
df_primary.update(df_updated.set_index('object_id')[['status', 'category']])
df_primary = df_primary.reset_index()

答案 1 :(得分:0)

根据诸如左/右/内联接之类的要求使用联接方法。它将比其他任何方式都快。