我有两个看起来像这样的数据帧:
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]
})
Run Code Online (Sandbox Code Playgroud)
现在,如果我使用pandas .isin函数,我可以做一些漂亮的事情
>>> print df_2.columns.isin(df_1.columns)
array([ True, True, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
列B并C从df_2存在于df_1同时D不
我的问题是:有没有人知道如何返回df_2中存在但不存在于df_1中的列的列标签
这样的事情
array([u'D'], dtype=string)
Run Code Online (Sandbox Code Playgroud)
先感谢您!
Pandas索引对象具有类似于set的属性,因此可以直接执行:
df_2.columns.difference(df_1.columns)
Index([u'D'], dtype='object')
Run Code Online (Sandbox Code Playgroud)
您还可以使用运算符&|^来计算交集,并集和对称差异:
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')
Run Code Online (Sandbox Code Playgroud)
使用-差异的运算符,现在已弃用:
df_2.columns - df_1.columns
FutureWarning: using '-' to provide set differences with Indexes is deprecated, use .difference()
Index([u'D'], dtype='object')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2691 次 |
| 最近记录: |