2016-04-11 137 views
14

我有兩個數據幀,每個數據幀都有兩個索引列。我想合併它們。例如,第一個數據幀如下:在PANDAS索引中合併數據幀

     V1 

    A  1/1/2012 12 
      2/1/2012 14 
    B  1/1/2012 15 
      2/1/2012 8 
    C  1/1/2012 17 
      2/1/2012 9 

第二個數據框如下:

     V2 

    A  1/1/2012 15 
      3/1/2012 21    
    B  1/1/2012 24 
      2/1/2012 9 
    D  1/1/2012 7 
      2/1/2012 16 

和結果,我想獲得如下:

     V1 V2 

    A  1/1/2012 12 15 
      2/1/2012 14 N/A 
      3/1/2012 N/A 21   
    B  1/1/2012 15 24 
      2/1/2012 8 9 
    C  1/1/2012 7 N/A 
      2/1/2012 16 N/A 
    D  1/1/2012 N/A 7 
      2/1/2012 N/A 16 

我已經嘗試了幾個版本usig pd.merge和.join,但似乎沒有任何工作。你有什麼建議嗎?非常感謝你。

+0

嘗試pd.concat ...這應該工作。 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.concat.html ..您可以選擇您想要加入數據框的軸。 – Joey

回答

18

你應該能夠使用join,這對指數爲默認連接。根據您的預期結果,您必須使用outer作爲連接類型。

>>> df1.join(df2, how='outer') 
      V1 V2 
A 1/1/2012 12 15 
    2/1/2012 14 NaN 
    3/1/2012 NaN 21 
B 1/1/2012 15 24 
    2/1/2012 8 9 
C 1/1/2012 17 NaN 
    2/1/2012 9 NaN 
D 1/1/2012 NaN 7 
    2/1/2012 NaN 16 

簽名:_.join(其他上=無,如何= '左',lsuffix = '',rsuffix = '',排序= FALSE) 文檔字符串: 加入與其他數據幀列索引或 列。高效地通過 傳遞一個列表,通過索引立即加入多個DataFrame對象。

+0

This Works,thank you! – km1234

5

你可以用merge做到這一點:

df_merged = df1.merge(df2, how='outer', left_index=True, right_index=True) 

關鍵字參數how='outer'保留所有指數從兩個框架,與NaN失蹤指數填充。 left_indexright_index關鍵字參數在索引上進行合併。如果在合併後在列中獲得所有NaN,則另一個故障排除步驟是驗證您的索引是否具有相同的dtypes

上面的merge代碼產生以下輸出對我來說:

   V1 V2 
A 2012-01-01 12.0 15.0 
    2012-02-01 14.0 NaN 
    2012-03-01 NaN 21.0 
B 2012-01-01 15.0 24.0 
    2012-02-01 8.0 9.0 
C 2012-01-01 17.0 NaN 
    2012-02-01 9.0 NaN 
D 2012-01-01 NaN 7.0 
    2012-02-01 NaN 16.0 
+0

這也適用,謝謝! – km1234