我有两个 pandas 数据框,它们有一些共同的行。
假设 dataframe2 是 dataframe1 的子集。
如何获取不在 dataframe2 中的 dataframe1 行?
df1 = pandas.DataFrame(data = {'col1' : [1, 2, 3, 4, 5], 'col2' : [10, 11, 12, 13, 14]})
df2 = pandas.DataFrame(data = {'col1' : [1, 2, 3], 'col2' : [10, 11, 12]})
df1
col1 col2
0 1 10
1 2 11
2 3 12
3 4 13
4 5 14
df2
col1 col2
0 1 10
1 2 11
2 3 12
预期结果:
col1 col2
3 4 13
4 5 14
原文由 think nice things 发布,翻译遵循 CC BY-SA 4.0 许可协议
一种方法是将内部合并的结果存储在两个 dfs 中,然后当一列的值不在这个 common 中时,我们可以简单地选择行:
编辑
您发现的另一种方法是使用
isin
这将产生NaN
您可以删除的行:但是,如果 df2 不以相同的方式开始行,那么这将不起作用:
将产生整个 df: