すごい基本的なことで、かつ調べればすぐわかることですがメモしておきます。
下記のような2つのデータフレームをカラムkeyで結合します。結合の仕方はなんでも良いです。
結合するときのスクリプトは下記の通りです。
import pandas as pd pd.merge(left_df, right_df, on=["key"], how="outer")
ところが結合したら、left_dfとright_dfのkeyを同じものと認識してくれず、図2のようになってしまいました。
理由を調べてみると、keyの型が違うことが原因でした。具体的には、下記のスクリプトを書いて確かめました。 (スクリプト中の -> は出力結果を表しています)
print(type(left_df["key"][0])) # -> <class 'str'> print(type(right_df["key"][0])) # -> <class 'int'>
keyの型が違うことがわかったので、型を揃えて結合させればOKですね。今回は、right_dfのkeyの型をstrにして結合させます。
right_df["key"] = right_df["key"].astype(str)
無事に意図したとおりの出力ができました。