我有两个看起来像这样的数据框:
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)
列B和Cfromdf_2存在于df_1whileD中不
B
C
df_2
df_1
D
我的问题是:是否有人知道为df_2中但不存在于df_1中的列返回列标签的方法
像这样的东西
array([u'D'], dtype=string)
先感谢您!
熊猫索引对象具有类似集合的属性,因此您可以直接执行以下操作:
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')