昨日の indicator の記事を書くためにドキュメントを読んでいて見つけた、 validate という引数の紹介です。
データフレーム通しを結合する時に、結合に使うキーのユニーク性が重要になることがあります。
事前に確認するようにコードを書いておけば済む話ではあるのですが、
pandasのmerge関数では、キーが一意でなかった時にエラーを上げてくれる引数があるようです。
ドキュメント: pandas.merge
引数 validate には、 one_to_one / one_to_many / many_to_one / many_to_many の4種類の文字列か、None(デフォルト)を
渡すことができます。
そして、 one_to_one なら 1:1, one_to_many なら 1:m 、という風にkeyが対応してなければエラーを上げてくれます。
many_to_many と None はノーチェックです。
なので、きちんとエラーをキャッチするように次のようにコードを書けます。
(データの準備等は省略)
try:
df_merge = pd.merge(
df_0,
df_1,
on="key",
how="outer",
validate="one_to_many",
)
except pd.errors.MergeError as e:
print(e)
# Merge keys are not unique in left dataset; not a one-to-many merge
発生するエラーは pd.errors.MergeError です。
データを何種類か用意して、validateの引数を変えながら動かすと色々動きがわかると思います。