2015-09-01 132 views
1

我想組合2個類似的數據幀。我檢查了幾個網站,但找不到我的問題的答案。組合2個數據幀

df1 = DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 
       'B': ['B0', 'B1', 'B2', 'B3'], 
       'C': ['C0', 'C1', 'C2', 'C3'], 
       index=[0, 1, 2]) 
df2 = DataFrame({'A': ['A0', 'A1', 'A4', 'A3'], 
       'B': ['B0', 'B1', 'B4', 'B3'], 
       'D': ['D0', 'D1', 'D4', 'D3']}, 
       index=[0, 1, 2]) 

我想有

df3 = DataFrame({'A': ['A0', 'A1', 'A3'], 
        'B': ['B0', 'B1', 'B3'], 
        'C': ['C0', 'C1', 'C3'], 
        'D': ['D0', 'D1', 'D3']. 
        index=[0, 1, 2, 3]) 

基本上我結合2個dataframes,加列d到第一數據幀。但是我忽略了任何不會有C和D值的行,比如第2行和第4行。 我嘗試過append和concat,但它只是將所有行和所有行堆疊在一起。

謝謝!

回答

1

只是做一個默認merge這將執行共同列內連接:

In [80]: 

df1.merge(df2) 
Out[80]: 
    A B C D 
0 A0 B0 C0 D0 
1 A1 B1 C1 D1 
2 A3 B3 C3 D3 
+0

謝謝。這正是我需要的。還有一個問題:當我輸入實際列名與ABCD時,輸出數據框中的列總是按照字母順序排列,無論我按什麼順序輸入它們。因此,即使我在香蕉後輸入蘋果,名爲蘋果的列也總是在列香蕉之前 – AK9309

+0

如果您問的是如何重新排列列,您可以傳遞所需順序列表:'df1.merge(df2).ix [: ,['A','D','B','C']]將重新排列列,一般做'df.ix [:, col_list]',其中'col_list'是列的列表將重新排列列訂單 – EdChum

+0

明白了。謝謝! – AK9309