Webは用いる人のリテラシーで決まる 文学部卒・30代でエンジニアに転向した私の業界裏話や技術ノート
Twitter Facebook
TOP > BLOG > IT記事

pandas.DataFrameを結合するmergeでleft_onとright_onの使い方に関する備忘録エンジニア向け

早川朋孝 早川朋孝
Webエンジニア
業界15年
Python

pandas.DataFrameを結合するmergeでleft_onとright_onの使い方に関する備忘録

いま自分でpythonを使ってレコメンドエンジンを作ろうと準備をしているのですが、その過程でpandas.DataFrameのライブラリを使い異なるテーブル2つを結合させて、データを分析する場面に出くわしました。

これをするにはmerge()という関数を使い、left_on、right_onという引数を使えば希望の動作になるらしいことが分かったのですが、left_onとright_onの使い方がよく分からん。なのでネットで調べたのですが、どうもしっくり説明しているページがないのです。

さらに手元に『Pythonによるあたらしいデータ分析の教科書』という書籍があり、pandasの章を調べたけどこちらにも載っていない。もちろん巻末の牽引にもない。

ということで、これは自分で調べるしかないと思い、どういう動きをするかいろいろ自分で試しました。その結果得られたleft_onとright_onの説明は以下の通りです。

2つの相異なるテーブルを結合する際、それぞれのテーブルに同じカラム名が存在しない場合、どの列をkeyとしてマージするかを決定するのがleft_onとright_onである(違ったらすみません)

使用例

以下のような2つのtableがあるとします。

table1
index key1 key2
0 1 2
0 3 4
table2
index key11 key12
0 11 2
0 13 4

left_onでtable1のkey2を、right_onでtable2のkey12を指定してみましょう。

#pd.merge(table1, table2, left_on=’key2′, right_on=’key12′)

そうすると以下のように結合されます。

merge
index key1 key2 key11 key12
0 1 2 11 2
0 3 4 13 4

例えば、ECサイトのデータベースなどで、顧客の購入履歴に商品IDが「item_ID]というカラム名で登録があり、一方で商品データには商品IDは「ID」というようなデータを分析するような場合に、このleft_on、right_onを使う機会があるでしょう。

このブログを書いてる人
早川 朋孝

業界15年のウェブエンジニアです。文学部卒で20代はSEO、アクセス解析などフロントの運用を中心に経験しましたが、30代のある時、ひょんなことから一人情シスのような状況を経験することになり、流れでそのままエンジニアに転向しました。プログラムやサーバー管理、数学の勉強などをしなおして、いまではWebのことはフロントからバックエンドまでなんでもできます。

本が好きで月140時間は読書します。このブログではWeb業界で経験してきた業界の裏側、読書で学んだこと、技術ノートなどを書きます。ネコ好きなタバコ嫌いで、明治学院フランス文学科卒。

facebookへ
PAGE TOP