8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

pandas 中的“反合并”(Python)

Jarrod Carlson 2月前

39 0

我怎样才能找出两个数据框中同名列之间的差异?我的意思是,我有一个名为 X 的数据框 A,还有一个名为 X 的数据框 B,如果我执行 pd.merge(A, B, ...

我怎样才能找出两个数据框中同名列之间的差异?我的意思是,我有一个数据框 A,其中有一列名为 X,数据框 B 也有一列名为 X,如果我这样做 pd.merge(A, B, on=['X']) ,我将获得 A 和 B 的公共 X 值,但是我怎样才能获得“非公共”值?

帖子版权声明 1、本帖标题:pandas 中的“反合并”(Python)
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Jarrod Carlson在本站《numpy》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 如果将合并类型更改为 how='outer' indicator=True 这将添加一列来告诉您值是仅左/两者/右:

    In [2]:
    A = pd.DataFrame({'x':np.arange(5)})
    B = pd.DataFrame({'x':np.arange(3,8)})
    print(A)
    print(B)
       x
    0  0
    1  1
    2  2
    3  3
    4  4
       x
    0  3
    1  4
    2  5
    3  6
    4  7
    
    In [3]:
    pd.merge(A,B, how='outer', indicator=True)
    
    Out[3]:
         x      _merge
    0  0.0   left_only
    1  1.0   left_only
    2  2.0   left_only
    3  3.0        both
    4  4.0        both
    5  5.0  right_only
    6  6.0  right_only
    7  7.0  right_only
    

    然后,您可以在 col 上过滤结果合并的 df _merge

    In [4]:
    merged = pd.merge(A,B, how='outer', indicator=True)
    merged[merged['_merge'] == 'left_only']
    
    Out[4]:
         x     _merge
    0  0.0  left_only
    1  1.0  left_only
    2  2.0  left_only
    

    您还可以使用 isin 并否定掩码来查找不在 B 中的值:

    In [5]:
    A[~A['x'].isin(B['x'])]
    
    Out[5]:
       x
    0  0
    1  1
    2  2
    
返回
作者最近主题: