はじめに
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
コメント