非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python】DataFrameのmergeを使いこなして効率的にデータを結合する方法

   

データ分析の現場では複数のデータセットを結合して深い見解を得ることが常に要求されます。pandasのmergeはそれを完結するための非常に強力なツールです。今回mergeを使った基本的な結合から実践的な应用までを簡単なソースコードで解説します。

基本的な使い方

まずは、基本的なmergeの使い方を見てみましょう。how引数を使うと結合の方法を指定できます。

以下に、変数df1とdf2を組み合わせます:

import pandas as pd

# サンプルデータ

df1 = pd.DataFrame({
    'key': ['A', 'B', 'C'],
    'value_df1': [1, 2, 3]
})

df2 = pd.DataFrame({
    'key': ['B', 'C', 'D'],
    'value_df2': [4, 5, 6]
})

# 内部結合 (inner join)
result_inner = pd.merge(df1, df2, on='key', how='inner')
print("Inner Join:\n", result_inner)
# Inner Join:
#   key  value_df1  value_df2
# 0   B          2          4
# 1   C          3          5

# 左外部結合 (left join)
result_left = pd.merge(df1, df2, on='key', how='left')
print("Left Join:\n", result_left)
# Left Join:
#   key  value_df1  value_df2
# 0   A          1        NaN
# 1   B          2        4.0
# 2   C          3        5.0

# 右外部結合 (right join)
result_right = pd.merge(df1, df2, on='key', how='right')
print("Right Join:\n", result_right)
# Right Join:
#   key  value_df1  value_df2
# 0   B        2.0          4
# 1   C        3.0          5
# 2   D        NaN          6

# 全体結合 (outer join)
result_outer = pd.merge(df1, df2, on='key', how='outer')
print("Outer Join:\n", result_outer)
# Outer Join:
#   key  value_df1  value_df2
# 0   A        1.0        NaN
# 1   B        2.0        4.0
# 2   C        3.0        5.0
# 3   D        NaN        6.0
 

 

複数のキーを使った結合

複数の列をキーとして結合する場合、on引数にリストで指定することができます。

import pandas as pd

# 複数キーデータ

df3 = pd.DataFrame({
    'key1': ['A', 'B', 'C'],
    'key2': [1, 2, 3],
    'value_df3': [7, 8, 9]
})

df4 = pd.DataFrame({
    'key1': ['A', 'B', 'D'],
    'key2': [1, 2, 4],
    'value_df4': [10, 11, 12]
})

# 複数キーの結合
result_multi = pd.merge(df3, df4, on=['key1', 'key2'], how='inner')
print("Multi-key Inner Join:\n", result_multi)
# Multi-key Inner Join:
#   key1  key2  value_df3  value_df4
# 0    A     1          7         10
# 1    B     2          8         11
 

 

列名が異なる場合の結合

キーの列名が異なる場合は、left_onやright_onを使うことで実現できます。

import pandas as pd

# 列名が異なるデータ
df5 = pd.DataFrame({
    'left_key': ['A', 'B', 'C'],
    'value_df5': [13, 14, 15]
})

df6 = pd.DataFrame({
    'right_key': ['B', 'C', 'D'],
    'value_df6': [16, 17, 18]
})

# 異なる列名で結合
result_diff_key = pd.merge(df5, df6, left_on='left_key', right_on='right_key', how='inner')
print("Different Key Names Join:\n", result_diff_key)
# Different Key Names Join:
#   left_key  value_df5 right_key  value_df6
# 0        B         14         B         16
# 1        C         15         C         17
 

 

まとめ

pandasのmergeは、複雑なデータを仿作なく結合できる便利なツールです。インナー結合や外部結合などの形式に対応し複数キーや異なる列名での結合も支援しています。これを実際のデータ分析に対して導入してみましょう。

 

スポンサーリンク

 - Python