Python 2つのDataFrameを結合する便利な方法「merge関数」

 本記事では、二つのデータフレームを結合する雛形コードを6つ載せました。はじめに、その一覧を示します。

#1. 基本的な結合:
merged_df = pd.merge(df1, df2, on='key_column')

#2. 異なる列名を指定しての結合:
merged_df = pd.merge(df1, df2, left_on='left_key', right_on='right_key')

#3. 結合の種類を指定:
merged_df = pd.merge(df1, df2, how='inner')  # 内部結合
merged_df = pd.merge(df1, df2, how='outer')  # 外部結合
merged_df = pd.merge(df1, df2, how='left')   # 左外部結合
merged_df = pd.merge(df1, df2, how='right')  # 右外部結合

#4. 複数のキーに基づいて結合:
merged_df = pd.merge(df1, df2, on=['key1', 'key2'])

#5. インデックスに基づいて結合:
merged_df = pd.merge(df1, df2, left_index=True, right_index=True)

#6. 重複する列名の処理:
merged_df = pd.merge(df1, df2, on='key_column', suffixes=('_left', '_right'))

以降では、上記1~6について、順に図入りで示します。

#1. 基本的な結合(共通の列名の指定):
merged_df = pd.merge(df1, df2, on='key_column')

下図左が結合元の2つのデータフレームで、右が結合後のデータフレームです。結合のキーとなる列名は「key_column」です。これにより、df1とdf2がkey_columnに基づいて結合します。

 

#2. 異なる列名を指定しての結合:
merged_df = pd.merge(df1, df2, left_on='left_key', right_on='right_key')

df1の「left_key」列とdf2の「right_key」列を基準に結合します。

 

#3. 結合の種類を指定:
merged_df = pd.merge(df1, df2, how='inner')  # 内部結合

df1とdf2の「key_column」ついて、共通の要素を持つ行を結合します。

 

merged_df = pd.merge(df1, df2, how='outer')  # 外部結合

df1とdf2の「key_column」ついて、共通の要素をもつ行以外の行も結合します。

 

merged_df = pd.merge(df1, df2, how='left')   # 左外部結合

df1とdf2の「key_column」ついて、共通の要素をもつ行以外にdf1の行も結合します。

 

merged_df = pd.merge(df1, df2, how='right')  # 右外部結合

df1とdf2の「key_column」ついて、共通の要素をもつ行以外にdf2の行も結合します。

 

#4. 複数のキーに基づいて結合:
merged_df = pd.merge(df1, df2, on=['key1', 'key2'])

複数の列を結合キーとして指定してdf1とdf2を結合します。

 

#5. インデックスに基づいて結合:
merged_df = pd.merge(df1, df2, left_index=True, right_index=True)

列名ではなくて、df1とdf2の共通するインデックスに基づいて結合します。

 

#6. 重複する列名の処理:
merged_df = pd.merge(df1, df2, on='key_column', suffixes=('_left', '_right'))

もし、結合するキー以外に共通する列名がある場合、接尾辞を付けて列名を区別できます。

以上

<広告>