【Python】Pandas DataFrameの結合(merge)方法を紹介

  • URLをコピーしました!

表と表を結合させたいときがあると思います。

そのとき、Pythonではmerge()関数を使用します。

今回は、merge()関数で表を結合する方法を紹介します。

目次

表の結合の種類

表の結合には4種類あります。

  • 内部結合: Inner Join
  • 外部結合: Outer Join
  • 右結合: Right Join
  • 左結合: Left Join

それぞれのイメージは以下です。

それではそれぞれの結合方法について詳しく説明します。

内部結合: Inner Join

内部結合は、共通のキーに対し、2つの表で一致する行が結合されます。

それ以外の行は、排除されます。

merge()関数を使用し、内部結合する方法は以下の通りです。

df1.merge(df2, how='inner')

df1:結合したDataFrameのひとつ目

df2:結合したDataFrameのふたつ目

how: innerで内部結合を表す

それでは、具体的なコードを紹介します。

import pandas as pd

data1 = {
    'Key': ['K0', 'K1', 'K2'],
      'A': ['A0', 'A1', 'A2'],
      'B': ['B0', 'B1', 'B2'],
}

data2 = {
    'Key': ['K0', 'K1', 'K3'],
      'C': ['C0', 'C1', 'C3'],
      'D': ['D0', 'D1', 'D3'],
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

result = df1.merge(df2, how='inner')
print(result)

実行結果

共通のキー(Key)に対し、一致する行(K0, K1)が結合され、他が排除されています。

上記結果を図で表現すると以下のようになります。

外部結合: Outer Join

外部結合は、共通のキーに対し、一致する行と一致しない行も結合します。

merge()関数を使用し、外部結合する方法は以下の通りです。

df1.merge(df2, how='outer')

df1:結合したDataFrameのひとつ目

df2:結合したDataFrameのふたつ目

how: outerで外部結合を表す

それでは、外部結合の具体的なコードを紹介します。

import pandas as pd

data1 = {
    'Key': ['K0', 'K1', 'K2'],
      'A': ['A0', 'A1', 'A2'],
      'B': ['B0', 'B1', 'B2'],
}

data2 = {
    'Key': ['K0', 'K1', 'K3'],
      'C': ['C0', 'C1', 'C3'],
      'D': ['D0', 'D1', 'D3'],
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

result = df1.merge(df2, how='outer')
print(result)

実行結果

共通のキー(key)に対し、一致する行(K0, K1)と一致しない行(K3, K4)が結合されています。

上記結果を図で表現すると以下のようになります。

右結合: Right Joinと左結合: Left Join

右結合は、右側の表のキーをベースに結合します。

右側の表のキーはすべて結合されます。

右側の表にしかなかったデータは欠損値(NaN)で埋められます。

一方、左結合は左側の表のキーをベースに結合します。

左側の表にしかなかったデータは欠損値(NaN)で埋められます。

merge()関数を使用し、右結合および左結合する方法は以下の通りです。

df1.merge(df2, how='right')
df1.merge(df2, how='left')

df1:結合したDataFrameのひとつ目(左側の表)

df2:結合したDataFrameのふたつ目(右側の表)

how: rightまたはleftで右結合、または左結合を表す

それでは、右結合および左結合の具体的なコードを紹介します。

import pandas as pd

data1 = {
    'Key': ['K0', 'K1', 'K2'],
      'A': ['A0', 'A1', 'A2'],
      'B': ['B0', 'B1', 'B2'],
}

data2 = {
    'Key': ['K0', 'K1', 'K3'],
      'C': ['C0', 'C1', 'C3'],
      'D': ['D0', 'D1', 'D3'],
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

result1 = df1.merge(df2, how='right')
result2 = df1.merge(df2, how='left')

print(result1)
print(result2)

実行結果

右結合

左結合

右結合は、右側の表のキー(K0, K1, K3)をベースに結合され、

左結合は、左側の表のキー(K0, K1, K2)をベースに結合されていることがわかります。

上記結果を図で表現すると以下のようになります。

まとめ

DataFrameを結合する方法を結合の種類と合わせて紹介しました。

それぞれの結合方法を実際に出力してみることで、

イメージがつきやすくなったと思います。

参考

おすすめ教材

米国データサイエンティストがやさしく教えるデータサイエンスのためのPython講座 icon
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

エンジニア。20代。組み込みエンジニアとして働き始めるも、働き方や業務内容に限界を感じ、 AI,Web3エンジニアを目指して勉強中。 エンジニアとして思うことや、学んだことを発信します。

目次