【发布时间】:2021-02-25 15:43:12
【问题描述】:
我有一个包含 300 万行 (df1) 和另一个包含 10k 行 (df2) 的数据框。为 df2 中的每一行过滤 df1 的最快方法是什么?
这正是我需要在循环中做的事情:
for i in list(range(len(df2))): #For each row
x = df1[(df1['column1'].isin([df2['info1'][i]])) \
& (df1['column2'].isin([df2['info2'][i]])) \
& (df1['column3'].isin([df2['info3'][i]]))]
# ..... More code using x variable every time ......
此代码速度不够快,无法使用。
请注意,我使用了 .isin 函数,但其中始终只有一项。我发现使用 .isin() ,df1['column1'].isin([df2['info1'][i]] 比使用 df1['column1'] == df2['info1'][i] 更快。
【问题讨论】:
-
我可能遗漏了什么,但
df1["column1"].isin(df2["info1"])有什么问题?
标签: python pandas dataframe for-loop filter