[pandas] 17. DataFrameの結合(merge)

Pandas

はじめに

pandasのDataFrameはデータ分析において非常に便利なツールですが、複数のDataFrameを扱う場合には結合が必要になることがあります。本記事ではpandasのmerge()関数を使ってDataFrameを横方向に結合する方法について解説します。共通のキーを使った結合や異なるタイプの結合方法(inner、outer、left、right)について学んでいきましょう。

解説

複数のDataFrameの結合(merge)

pandasには複数のDataFrameを横方向に結合するための方法として.merge()があります。本稿では、merge()の使い方について詳しく説明します。

データの生成

共通の列名(sample)を持つDataFrame、df_1とdf_2を辞書データから作成します。両DataFrameではsample列の値の順序が異なることに注意してください。

.merge()による結合

merge(df_1, df_2)を使用すると、df_1とdf_2を共通キーで結合したDataFrameが得られます。

同様に、merge(df_2, df_1)とすることで、df_2にdf_1の’score’列が結合されたDataFrameを得ることができます。

形状の異なるDataFrameの結合

マージされたデータフレームは形状が異なりますが、dateとweatherが関連付けられているため、各dateに対応する適切なweather値が代入されます。

left_on, right_onの使い方

df_6は、df_2のカラム名を「sample」から「data_label」に変更したDataFrameです。これらを列名を保持したまま結合するには、left_onにdf_1のカラム名、right_onにdf_6のカラム名を指定することで、効果的にmergeすることができます。

結合のキーとしてインデックスを用いる

インデックスを結合のキーとして使用することができます。

.set_index(‘sample’)メソッドを使うと、’sample’列をインデックスとしたDataFrameを作成できます。インデックスをキーとして結合する場合は、left_index=Trueとright_index=Trueのパラメータを指定するだけです。

join()による結合

インデックスを結合キーとして使用することは、join()メソッドでも可能です。

まとめ

本記事では、pandasのmerge()関数を使ってDataFrameを横方向に結合する方法を解説しました。キー列を指定した結合、異なる結合方法(inner、outer、left、right)の違いと使い分け、suffixesパラメータによる列名の衝突回避などについて説明しました。DataFrameの結合は複数のデータソースを組み合わせて分析する際に非常に重要な技術です。実際のデータ分析シナリオに応じて適切な結合方法を選択することで、効率的なデータ処理が可能になります。

参考

pandas.DataFrame.merge — pandas 2.3.2 documentation
pandas.DataFrame.join — pandas 2.3.2 documentation

コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)

コメント