左右のキーインデックスが異なると、pandas mergeメソッドが奇妙な仕事をすることがわかりました。インスタンスの左右のdfのキーが違うと、pandas mergeが変な仕事をする
、私は
0 1 2 3 4 5
0 1 2 1 2 3 4
1 2 3 2 3 4 5
2 1 2 3 4 5 6
3 2 2 4 5 6 7
4 2 3 5 6 7 8
right_df
0 1 2 3 4 5
0 1 2 3 4 5 6
1 1 2 3 4 5 7
2 2 3 4 5 6 7
3 2 3 4 5 6 8
といくつかのパラメータでジョブをマージ行い、
pd.merge(left_df, right_df, how="inner", left_on = [0,1], right_on=[0,1], indicator=False)
left_df
に従うよう左右のデータフレームを定義します
結果は期待どおりに検索されます。
0 1 2_x 3_x 4_x 5_x 2_y 3_y 4_y 5_y
0 1 2 1 2 3 4 3 4 5 6
1 1 2 1 2 3 4 3 4 5 7
2 1 2 3 4 5 6 3 4 5 6
3 1 2 3 4 5 6 3 4 5 7
4 2 3 2 3 4 5 4 5 6 7
5 2 3 2 3 4 5 4 5 6 8
6 2 3 5 6 7 8 4 5 6 7
7 2 3 5 6 7 8 4 5 6 8
しかしleft_onとright_onのパラメータを別に設定すると、結果は以下のように非常に奇妙になります。
merge job with '1,2' left key index
pd.merge(left_df, right_df, how="inner", left_on = [1,2], right_on=[0,1], indicator=False)
1 2 0_x 1_x 2_x 3_x 4_x 5_x 0_y 1_y 2_y 3_y 4_y 5_y
0 2 3 1 2 3 4 5 6 2 3 4 5 6 7
1 2 3 1 2 3 4 5 6 2 3 4 5 6 8
^^ ^^
these columns are duplicated.
0_x 1 2 3_x 4_x 5_x 2_y 3_y 4_y 5_y
0 1 2 3 4 5 6 4 5 6 7
1 1 2 3 4 5 6 4 5 6 8
this is what I expected. (keys of each df are removed.)
上記の奇妙な仕事を解決するためのパラメータや方法はありますか?