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

pandas 中的“反合并”(Python)

Jarrod Carlson 2月前

37 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)
  • 接受的答案给出了所谓的 LEFT JOIN IF NULL 两个 中除匹配行之外的所有行 ,而不仅仅是左边的行。您必须向过滤器添加另一个条件,因为您想排除所有位于 both .

    在这种情况下,我们使用 DataFrame.merge & DataFrame.query

    df1 = pd.DataFrame({'A':list('abcde')})
    df2 = pd.DataFrame({'A':list('cdefgh')})
    
    print(df1, '\n')
    print(df2)
    
       A
    0  a # <- only df1
    1  b # <- only df1
    2  c # <- both
    3  d # <- both
    4  e # <- both
    
       A 
    0  c # both
    1  d # both
    2  e # both
    3  f # <- only df2
    4  g # <- only df2
    5  h # <- only df2
    
    df = (
        df1.merge(df2, 
                  on='A', 
                  how='outer', 
                  indicator=True)
        .query('_merge != "both"')
        .drop(columns='_merge')
    )
    
    print(df)
    
       A
    0  a
    1  b
    5  f
    6  g
    7  h
    
返回
作者最近主题: