はじめに
今回、2つのDataFrame水平方向に結合 (OUTER JOIN) したいと思い、調べてみました。
さすがは痒いところに手が届くDataFrame、様々な方法がありました。
定番っぽいものを3つまとめたので、共有させて頂きます。
いきなり結論コード
- 下の実行ボタンで動作確認できます。
- コードを書き換えて実行することもできます。
- 試したいパターンを適宜コメントアウト解除して試して下さい。
- 元のコードに戻したい場合は、このページを再読み込みしてもらえると元に戻ります。
解説
水平方向に結合する前のDataFrameは、こんな感じです。

これらのDataFrame達を…

こうします!
それでは、それぞれ一言で解説します。
1. join式
df1.join(df2, how='outer')
今回、おそらく第一選択になりそうなのはこのjoin式かと思われます。
デフォルトだとINNER JOINになるので注意。
2. concat式
pd.concat([df1, df2], axis=1)
パラメータから察するに、おそらく垂直方向 (縦の) 連結を想定していた様子。
axis=1
とすることで水平方向の連結にも対応したといった印象。
3. merge式
pd.merge(df1, df2, right_index=True, left_index=True, how='outer')
こちらもパラメータから察するに、そもそもはインデックスではなく任意のカラム同士でのJOINを想定していた様子。
right_index=True, left_index=True
とすることで、インデックスを軸とした連結に対応したといった印象。
さいごに
今日は、2つのDataFrameを縦に結合 (OUTER JOIN)する方法をまとめました。
何かツッコミがあれば、Twitterでお待ちしております!
最後まで読んで頂き、ありがとうございました!