[pandas] 18. DataFrameの結合(merge)における内部結合と外部結合

Pandas

はじめに

pandasで複数のDataFrameを横方向に結合する方法として、merge()がある。一般的には、2つのデータで共通する部分のみが結合されるが、結合方法を指定することで、非共通部分も結合できる。ここでは、その方法について説明する。またカラム名が同じDataFrameを結合するときに違うカラム名にして結合する方法も紹介する。

解説

モジュールのインポート

データの生成

df1に’name’と’number’、df2に’name’と’counts’をカラム名としてもつDataFrameを作成した。

merge()による結合

merge(df_1,df_2)により、df_1とdf_2の ‘number’ と ‘counts’が結合したDataFrameが得られる。デフォルトのhowが’innner’であるため、howを記述しなければ’inner’での結合となる。innerは内部結合の意味で両方のデータフレームに共通するデータのみが結合される。

merge(how=’outer’)による結合

how=’outer’とすることで、カラム名の和集合で結合が行われる。そのため、df1とdf2でデータがない部分はNaNで穴埋めされる。

merge(how=’right’)、merge(how=’left’)による結合

rightでは右のデータフレームの構造が維持され、leftでは左のデータフレームの構造が維持された状態でDataFrameが結合される。

列名が重複する場合

df1とdf3はnumberのカラム名が重複している。on=”name”として、これらを結合すると、それぞれの列名の後に、_x,_yがついた状態で結合される。

on=”name”を記述しないと空のDataFrameが返ってくる。

suffixes=[“_a”, “_b”]とすることで、カラム名の後につく接尾語を変えることができる。

参考

pandas.DataFrame.merge — pandas 2.2.3 documentation
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)

コメント