熊猫返回不在其他数据框中的数据框中的列

发布于 2021-01-29 15:00:03

我有两个看起来像这样的数据框:

df_1 = pd.DataFrame({
'A' : [1.0, 2.0, 3.0, 4.0],
'B' : [100, 200, 300, 400],
'C' : [2, 3, 4, 5] 
                   })

df_2 = pd.DataFrame({
'B' : [1.0, 2.0, 3.0, 4.0],
'C' : [100, 200, 300, 400],
'D' : [2, 3, 4, 5] 
                  })

现在,如果我利用pandas .isin函数,我可以做一些漂亮的事情

>>> print df_2.columns.isin(df_1.columns)
array([ True,  True, False], dtype=bool)

BCfromdf_2存在于df_1whileD中不

我的问题是:是否有人知道为df_2中但不存在于df_1中的列返回列标签的方法

像这样的东西

array([u'D'], dtype=string)

先感谢您!

关注者
0
被浏览
106
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    熊猫索引对象具有类似集合的属性,因此您可以直接执行以下操作:

    df_2.columns.difference(df_1.columns)
    Index([u'D'], dtype='object')
    

    您还可以使用运算符&|^来计算交集,并集和对称差:

    df_1.columns & df_2.columns
    Index([u'B', u'C'], dtype='object')
    
    df_1.columns | df_2.columns
    Index([u'A', u'B', u'C', u'D'], dtype='object')
    
    df_1.columns ^ df_2.columns
    Index([u'A', u'D'], dtype='object')
    

    过去存在-差异的运算符,现已弃用:

    df_2.columns - df_1.columns
    FutureWarning: using '-' to provide set differences with Indexes is deprecated, use .difference()
    Index([u'D'], dtype='object')
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看