import pandas as pd
import numpy as np
df01 = pd.DataFrame( {'name':['A', 'B', 'C', 'D','E'],
'class':['a1', 'a1', 'a1', 'a1','a1'],
'math':[60,70, 80, 90, 100]})
df01
df02 = pd.DataFrame( {'name':['A', 'B', 'C', 'D'],
'class':['a1', 'a1', 'a1', 'a1'],
'english':[100, 90, 80, 70]})
df02
pd.merge(df01,df02,on='name')
Pythonで列名をキーに2つのデータフレームを結合する方法です。
使用するのは、PythonのPandasライブラリのmergeメソッドです。
Pandasでは、2つのデータフレームを左のデータフレームと右のデータフレームとして考えます。
mergeメソッドでは、それぞれのデータフレームの共通の列を指定して、それを元に結合を行うことができます。
このような2つのデータフレームを用意します。
pd.mergeの第一引数に左のデータフレーム、第二引数に右のデータフレーム、onの引数にはキーにしたい共通の列名を指定します。
実行します。
pd.merge(df01,df02, on='name', how='outer')
キーに指定した列で結合することができました。
なお、左のデータフレームにあったEさんのデータがありません。
これは、mergeメソッドのデフォルトがinnerに指定されているためです。
innerとは、2つのデータフレームの共通するキーのみ結合する方法です。
Eさんのデータも結合させるには、outerに指定します。
howの引数にouterを指定します。
実行します。
Eさんのデータも結合することができました。
片方のデータフレームにしかないデータはNaNと表示されます。
ちなみに、mergeメソッドの結合方法には、inner、outerの他にleftとrightがあります。
leftは左のデータフレームが全て残り、右は共通している部分だけが残ります。
rightは右のデータフレームが全て残り、左は共通している部分だけが残ります。
pd.merge(df01,df02, on='name',how='outer',suffixes=['_left', '_right'])
これを変更するには、suffixesという引数にそれぞれ変更したい列名をリストで追加します。
実行します。
列名をそれぞれ変更することができました。