初心者データサイエンティストの備忘録

調べたことは全部ここに書いて自分の辞書を作る

pandas.mergeできないときは型を意識する

すごい基本的なことで、かつ調べればすぐわかることですがメモしておきます。

下記のような2つのデータフレームをカラムkeyで結合します。結合の仕方はなんでも良いです。

図1:結合対象のDatFrame

結合するときのスクリプトは下記の通りです。

import pandas as pd
pd.merge(left_df, right_df, on=["key"], how="outer")

ところが結合したら、left_dfとright_dfのkeyを同じものと認識してくれず、図2のようになってしまいました。

図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)

無事に意図したとおりの出力ができました。

図3:意図通りの結合