我正在尝试比较两个pandas数据帧的标头并过滤匹配的列。 df1是我的两个标题的大数据帧,df2是一个字典,我已经保存了df1所需的每个列标题。
所以如果df1是这样的话:
A B C D
a b c d
0.469112 -0.282863 -1.509059 -1.135632
1.212112 -0.173215 0.119209 -1.044236
-0.861849 -2.104569 -0.494929 1.071804
0.721555 -0.706771 -1.039575 0.271860
-0.424972 0.567020 0.276232 -1.087401
-0.673690 0.113648 -1.478427 0.524988
和df2是这样的:
B D E
我需要获得输出:
B D
-0.282863 -1.135632
-0.173215 -1.044236
-2.104569 1.071804
-0.706771 0.271860
0.567020 -1.087401
0.113648 0.524988
以及不匹配的标题元素列表:
A C
以及df1缺少的元素:
E
到目前为止,我已经在stackoverflow上尝试了iloc命令和许多不同的建议来比较行。因为我比较标题虽然不可能。
编辑:我试过了df1.columns.intersection(df2.columns)
但结果是:
MultiIndex(levels=[[], []],
labels=[[], []])
这是因为有多个标题?
答案 0 :(得分:8)
对于给定的df1
和df2
In [1041]: df1.columns
Out[1041]: Index([u'A', u'B', u'C', u'D'], dtype='object')
In [1042]: df2.columns
Out[1042]: Index([u'B', u'D', u'E'], dtype='object')
df1
和df2
In [1046]: df1.columns.intersection(df2.columns)
Out[1046]: Index([u'B', u'D'], dtype='object')
df1
中的列不在df2
In [1047]: df1.columns.difference(df2.columns)
Out[1047]: Index([u'A', u'C'], dtype='object')
df2
中的列不在df1
In [1048]: df2.columns.difference(df1.columns)
Out[1048]: Index([u'E'], dtype='object')