【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は、複雑なデータを仿作なく結合できる便利なツールです。インナー結合や外部結合などの形式に対応し複数キーや異なる列名での結合も支援しています。これを実際のデータ分析に対して導入してみましょう。
スポンサーリンク