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