【毎日Python】Pythonでカラムをキーにデータフレームを結合する方法|pandas.merge

merge
こつこつPython
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という引数にそれぞれ変更したい列名をリストで追加します。
実行します。
列名をそれぞれ変更することができました。

関連メソッド

【毎日Python】Pythonで横方向に複数のデータフレームを結合する方法|DataFrame.join

【毎日Python】Pythonで複数のデータフレームを縦方向・横方向に複数結合する方法|pandas.concat

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト