Python入門:pandasのmergeで複数のデータを結合する方法

pandas python 1

実務でデータを扱う場合、
1つのデータだけで完結することはほとんどありません。

例えば、

  • 顧客情報のデータ
  • 売上データ

のように、別々のファイルに分かれていることが多くあります。

こうしたデータを1つにまとめるときに使うのが
merge です。

この記事では、

  • mergeとは何か
  • 基本的な使い方
  • 結合の種類

を順を追って解説していきます。

pandasの導入記事はこちら。

Python入門:pandasの基本をやさしく解説(データ操作の超入門) – Lean Data Office

mergeとは何か

merge は、2つのデータを共通の列を使って結合する機能です。

イメージとしては、

「同じキー(共通項目)を持つ行同士をくっつける」

という処理です。

Excelでいう「VLOOKUP」に近い操作になります。


サンプルデータ

まずは2つのデータを用意します。

Python

import pandas as pd

df_customers = pd.DataFrame({

“customer_id”: [1, 2, 3],

“name”: [“A”, “B”, “C”]

})

df_sales = pd.DataFrame({

“customer_id”: [1, 2, 4],

“sales”: [100, 200, 300]

})
Show more lines

ここでは、

  • 顧客情報(名前)
  • 売上情報

が別々のデータになっています。


mergeの基本的な使い方

2つのデータを結合するには、次のように書きます。

Python

df_merged = pd.merge(df_customers, df_sales, on=”customer_id”)

print(df_merged)
Show more lines


何が起こっているのか

このコードは次の意味になります。

Python

pd.merge(データ1, データ2, on=”customer_id”)
Show more lines

つまり、

  • customer_id が同じもの同士を探して
  • 横にくっつける

という処理です。


結果のイメージ

customer_id | name | sales
------------|------|------
1           | A    | 100
2           | B    | 200

ここで重要なのは、

👉 customer_id=3 や 4 は消えていること

です。


なぜ消えるのか

デフォルトでは、merge

👉 両方に存在するデータだけ残す(内部結合)

という動きをします。


結合方法の種類(ここが重要)

merge にはいくつか種類があります。

どのデータを残すかを指定できます。


① inner結合(デフォルト)

Python

pd.merge(df1, df2, on=”id”, how=”inner”)
Show more lines

👉 両方に存在するものだけ残す


② left結合

Python

pd.merge(df1, df2, on=”id”, how=”left”)
Show more lines

👉 左のデータをすべて残す

例:

customer_id | name | sales
------------|------|------
1           | A    | 100
2           | B    | 200
3           | C    | NaN

salesが無い場合は NaN になります。


③ right結合

Python

pd.merge(df1, df2, on=”id”, how=”right”)
Show more lines

👉 右のデータをすべて残す


④ outer結合

Python

pd.merge(df1, df2, on=”id”, how=”outer”)
Show more lines

👉 両方すべて残す

customer_id | name | sales
------------|------|------
1           | A    | 100
2           | B    | 200
3           | C    | NaN
4           | NaN  | 300

なぜmergeが重要なのか

実務では、データは分割されていることが普通です。

例えば:

  • 顧客マスタ
  • 商品マスタ
  • 売上データ

これらを結合して初めて、

「誰が何を買ったか」

が分かるようになります。

その中心になるのが merge です。


よくある使い方

例えば、

Python

df = pd.merge(df_customers, df_sales, on=”customer_id”, how=”left”)
Show more lines

このように「left結合」を使うケースが多いです。

理由は、

👉 「元データを全部残したい」からです。


まとめ

この記事では、pandasの merge を解説しました。

  • mergeはデータ同士を結合する機能
  • 共通の列(キー)でつなぐ
  • how によって残るデータが変わる

最初のうちは、

  • inner:共通だけ
  • left:左優先

この2つを押さえるだけでも十分です。


この merge を使えるようになると、
一気に「実務で使えるレベル」に近づきます。

まずはサンプルを動かしながら、
「どのデータが残るのか」を確認してみてください 👍

筋トレとオートメーションが趣味。 モバイルアプリ個人開発者。 データ処理・可視化とレポートにハマり備忘録と情報共有のためにブログ開設し運営している。