Skip to content

9. データの結合・マージ・連結

データ分析を行う際には、複数のデータセットを組み合わせることが必要になることがよくあります。pandas は、データの結合やマージ、連結を行うための強力な機能を提供しています。この章では、それらの基本操作について学びましょう。

9.1 データフレームの結合(merge)

pandas では、SQL の JOIN と同様の操作を行うことができます。merge関数を使うことで、2 つの DataFrame をキーに基づいて結合することができます。

9.1.1 基本的な使い方

import pandas as pd

# サンプルデータ
df1 = pd.DataFrame({
    'key': ['A', 'B', 'C'],
    'value1': [1, 2, 3]
})

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

# 結合
result = pd.merge(df1, df2, on='key', how='inner')
print(result)

9.1.2 結合方法の指定

結合方法には以下の種類があります:

  • inner(内部結合、共通キーのみ)
  • outer(外部結合、全てのキー)
  • left(左外部結合、左のデータフレームを基準)
  • right(右外部結合、右のデータフレームを基準)

以下は例です:

# 外部結合の例
result_outer = pd.merge(df1, df2, on='key', how='outer')
print(result_outer)

9.2 データフレームの連結(concat)

複数の DataFrame を上下または左右に連結することができます。

9.2.1 縦方向に連結

df3 = pd.DataFrame({
    'key': ['E', 'F'],
    'value1': [7, 8]
})

result_concat = pd.concat([df1, df3], ignore_index=True)
print(result_concat)

9.2.2 横方向に連結

result_concat_axis1 = pd.concat([df1, df2], axis=1)
print(result_concat_axis1)

9.3 インデックスを用いた結合

インデックスを用いて結合を行うこともできます。mergeconcatのオプションを使うことで、インデックスをキーとして指定することが可能です。

9.3.1 インデックスでの結合

# インデックスを指定した結合
result_index = pd.merge(df1.set_index('key'), df2.set_index('key'), left_index=True, right_index=True, how='inner')
print(result_index)

これらの操作を通じて、異なるデータフレームを効果的に結合・マージ・連結するスキルを身につけることができます。それぞれの操作方法は、データ分析の場面で非常に役立つでしょう。ぜひ手を動かして試してみてください。