2017-08-03 132 views
0

我想比較兩個熊貓數據幀的標題並過濾匹配的列。 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 

到目前爲止,我在這裏嘗試了ILOC命令和很多不同的建議,對計算器比較行。由於我比較標題雖然不可能。

編輯:我曾嘗試

df1.columns.intersection(df2.columns) 

但結果是:

MultiIndex(levels=[[], []], 
      labels=[[], []]) 

這是因爲多個頭?

+2

請提供您寫的代碼與您想要做的最接近。 –

+0

請提供:df1.head()。to_dict()。在我眼中看起來很奇怪。 –

回答

3

下面的是一些方法,爲df2

In [1047]: df1.columns.difference(df2.columns) 
Out[1047]: Index([u'A', u'C'], dtype='object') 

Colu給出df1df2

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') 

列在這兩個df1df2

In [1046]: df1.columns.intersection(df2.columns) 
Out[1046]: Index([u'B', u'D'], dtype='object') 

列在df1不mns df2不在df1

In [1048]: df2.columns.difference(df1.columns) 
Out[1048]: Index([u'E'], dtype='object') 
+0

交集不起作用,我得到一個空的結果,看到我上面的編輯。這是因爲有多個標題? – Moiraine24

+0

標題錯了,現在我修復了它並解決了問題。謝謝! – Moiraine24