python - 如何基于另一个数据框将数据放入数据框中

标签 python pandas

我有一个这样的数据框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带有参数 indicatorquery用于过滤,然后使用 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/

相关文章:

python - 带有变量赋值的python中的列表理解

python - 循环遍历一个数据框中的单个列与另一个数据框中的列进行比较使用 Pandas 在第一个数据框中创建新列

python - 如何从Python的行列表中选择特定元素

python - 如何在一个表达式中合并两个字典?

python - Sphinx在make html之后找不到我的任何模块

python绘制多图

python - 解析 penn 语法树以提取其语法规则

python - 将列表转换为 Python Dataframe 中的列

Python 使用 drop() 方法?

python - 从 Pandas 的日期时间列中减去一年