【Python】pandasでDataFrameを内部結合(merge)

pandasでDataFrameを内部結合(merge)

 

papi
papi

pandasでDataFrameを内部結合(merge)する方法を紹介します。

 

キャラクターデータと属性データを属性IDで内部結合

【Excleデータ:character.xlsx characterシート】

キャラクターID 名称 タイプ 属性ID 形態
1978 アシュリー 妖精 3 契約
2355 シャンゼリゼ 妖精 3 進化
2495 アーク ドラゴン 4 契約

 

【Excleデータ:character.xlsx attributeシート】

属性ID 属性名
1
2
3
4
5

 

【コード&実行結果】

import pandas as pd

df_charactor = pd.read_excel('character.xlsx',sheet_name='character')
df_attribute = pd.read_excel('character.xlsx',sheet_name='attribute')

df_c_a= df_charactor.merge(df_attribute, how = 'inner', on = '属性ID')
print(df_c_a)

df_a_c = df_attribute.merge(df_charactor, how = 'inner', on = '属性ID')
print(df_a_c)

<実行結果>
 キャラクターID 名称 タイプ 属性ID 形態 属性名
0 1978 アシュリー 妖精 3 契約 水
1 2355 シャンゼリゼ 妖精 3 進化 水
2 2495 アーク ドラゴン 4 契約 光

 属性ID 属性名 キャラクターID 名称 タイプ 形態
0 3 水 1978 アシュリー 妖精 契約
1 3 水 2355 シャンゼリゼ 妖精 進化
2 4 光 2495 アーク ドラゴン 契約

 

【説明】

import pandas as pd

pandasを別名pdで利用出来るようにインポート。

 

df_charactor = pd.read_excel('character.xlsx',sheet_name='character')

ExcelファイルのcharacterシートをDataFrameに読み込み。

 

df_attribute = pd.read_excel('character.xlsx',sheet_name='attribute')

ExcelファイルのattributeシートをDataFrameに読み込み。

 

df_c_a= df_charactor.merge(df_attribute, how = 'inner', on = '属性ID')

df_charactorデータフレームにdf_attributeデータフレームを属性IDで内部結合。結合出来ない属性ID(1:火、2:樹、5:闇)の行は結合結果からは削除される。

 

df_c_a= df_charactor.merge(df_attribute)

デフォルトでhow = ‘inner’、onは同じ列名をキーとして結合が行われるため、省略しても同じ結果となる。

 

print(df_c_a)

<実行結果>
 キャラクターID 名称 タイプ 属性ID 形態 属性名
0 1978 アシュリー 妖精 3 契約 水
1 2355 シャンゼリゼ 妖精 3 進化 水
2 2495 アーク ドラゴン 4 契約 光

df_charactorデータフレームに属性名列が追加したDataFrameが作成されている。

 

df_a_c = df_attribute.merge(df_charactor, how = 'inner', on = '属性ID')

df_attributeデータフレームにdf_charactorデータフレームを属性IDで内部結合。結合出来ない属性ID(1:火、2:樹、5:闇)の行は結合結果からは削除される。

 

print(df_a_c)

<実行結果>
 属性ID 属性名 キャラクターID 名称 タイプ 形態
0 3 水 1978 アシュリー 妖精 契約
1 3 水 2355 シャンゼリゼ 妖精 進化
2 4 光 2495 アーク ドラゴン 契約

df_attributeデータフレームにキャラクターID列、名称列、タイプ列、形態列が追加したDataFrameが作成されている。

 

コメント