2016-04-11 7 views
14

私は2つのデータフレームを持ち、それぞれに2つのインデックスカラムを持っています。私はそれらをマージしたいと思います。例えば、最初のデータフレームは以下の通りです: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 

Iいくつかのバージョンの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(その他、= ''、rsuffix = '' =なし、どのように= '左'、lsuffix上、ソート= False)が ドキュメンテーション文字列: 他のデータフレームの列を参加インデックスまたはキーのいずれか 列。複数のDataFrameオブジェクトを効率的に結合する リストを渡すことで一度にインデックスを作成できます。

+0

これは動作します、ありがとう! – km1234

5

あなたはmergeでこれを行うことができます。

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

をキーワード引数how='outer'NaNに欠けている指標で埋め、両方のフレームからすべてのインデックスを保持します。 left_indexおよびright_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

関連する問題