2つのデータフレームを1つに結合(行、列の追加)
前回はPandasのconcat
を使って行や列にデータフレイムを追加する方法を紹介しました。
その中のオプションjoin
で、内部結合と外部結合の方法を紹介しましたが、このオプションには左外部結合(または右外部結合)がありません。
ただ、少し工夫することでできる方法がありますので、紹介します。
やりたいこと
左外部結合(df1の列(a,b,c)だけで行を追加)
コード紹介
# import import pandas as pd # データセットを作る df1 = pd.DataFrame({'a':[1,4], 'b':[2,5], 'c':[3,6]}) df2 = pd.DataFrame({'a':[7], 'b':[8], 'd':[9]}) # 左外部結合(行) df_tmp1 = pd.DataFrame([], columns=df1.columns) df_tmp2 = pd.concat([df2, df_tmp1]) df3 = pd.concat([df1, df_tmp2], join='inner') # インデックスリセット df3 = df3.reset_index(drop=True) df3
出力結果
少し解説
df_tmp1
df1の列を入れたからのデータフレームを作っています。
pd.DataFrame([], columns=df1.columns)
df_tmp2
上記の空のデータフレームとdf2を結合することで、df1にしかない列を追加します。
pd.concat([df2, df_tmp1])
df3
あとはdf2にしかない列(d)は不要ですので、innner joinします。
pd.concat([df1, df_tmp2], join='inner')
他にも良い方法があるかもしれませんが、取り急ぎ。