首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两列中的两个数据流并得出差异

比较两列中的两个数据流并得出差异
EN

Stack Overflow用户
提问于 2021-12-20 14:11:34
回答 2查看 42关注 0票数 2

让我说我有一个像这样的数据:

代码语言:javascript
复制
df1:
     col1          col2
0    data1         math
1    data1         math2
2    data2         math
3    data3         math
4    data4         math2

df2:
     col1          col2
0    data1         math
1    data1         math2
2    data1         math3
3    data2         math2
4    data3         math
5    data4         math2
6    data4         math3

如何基于col1和col2比较这两种数据格式,并得到区别(删除与df1匹配的所有行),并获得如下数据:

代码语言:javascript
复制
     col1          col2
0    data1         math3
1    data2         math2
2    data4         math3

我试过这个,但没有用:

代码语言:javascript
复制
df3 = df2[~(df2['col2'].isin(df1['col2']))].reset_index(drop=True)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-20 14:14:09

您的解决方案应该通过比较MultiIndex或元组来更改:

代码语言:javascript
复制
df3 = df2[~df2.set_index(['col1','col2']).index.isin(df1.set_index(['col1','col2']).index)].reset_index(drop=True)

df3 = df2[~df2[['col1','col2']].apply(tuple, 1).isin(df1[['col1','col2']].apply(tuple, 1))].reset_index(drop=True)
票数 1
EN

Stack Overflow用户

发布于 2021-12-20 14:15:05

您可以使用indicator=True执行合并,并且只保留right_only行:

代码语言:javascript
复制
(df1.merge(df2, on=['col1', 'col2'], how='outer', indicator=True)
    .query('_merge == "right_only"')
    .drop(columns='_merge').reset_index(drop=True)
)

产出:

代码语言:javascript
复制
    col1   col2
0  data1  math3
1  data2  math2
2  data4  math3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70423100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档