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があるとします。
index | key1 | key2 |
---|---|---|
0 | 1 | 2 |
0 | 3 | 4 |
index | key11 | key12 |
---|---|---|
0 | 11 | 2 |
0 | 13 | 4 |
left_onでtable1のkey2を、right_onでtable2のkey12を指定してみましょう。
そうすると以下のように結合されます。
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を使う機会があるでしょう。