我有一个这样的数据框A
user_id sku_id time
0 56804 75906 2016-02-01 00:10:48
1 56804 75906 2016-02-01 08:36:59
2 56805 75906 2016-02-01 08:36:59
3 56806 81256 2016-02-01 00:08:15
……
然后我有另一个像这样的数据框 B:
user_id sku_id
0 56804 75906
1 56806 81256
……
我想选择数据框 A 中的样本,其中 (user_id, sku_id) 不在数据框 B 中。如何有效地做到这一点?因为我的数据比较大,而且我是在内存有限的电脑上做的。
最佳答案
使用merge
带有参数 indicator
,query
用于过滤,然后使用 drop
删除辅助列:
df = pd.merge(df1, df2, how='outer', indicator=True)
.query('_merge == "left_only"')
.drop('_merge', 1)
print (df)
user_id sku_id time
2 56805 75906 2016-02-01 08:36:59
另一种解决方案:
x = pd.MultiIndex.from_arrays([df1['user_id'], df1['sku_id']])
y = pd.MultiIndex.from_arrays([df2['user_id'], df2['sku_id']])
inter = x.difference(y)
df1 = df1.set_index(['user_id', 'sku_id']).loc[inter].reset_index()
print (df1)
user_id sku_id time
0 56805 75906 2016-02-01 08:36:59
关于python - 如何基于另一个数据框将数据放入数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43929750/