Pandas データのマージ
マージ (merge)とは、何かと何かをくっつける、統合するという意味です。単純にデータの統合というよりも、IDなどで紐づけられているデータがあった場合に便利な関数です。例えば、先に身長データが合った際、IDに紐づけることで体重データを足したり、1年後の体重の推移を足すことも可能。まぁ、やってみましょう。
基礎のマージ
2つのdataframe、df1とdf2を作ります。
import pandas as pd
df1 = pd.DataFrame({
"d1" : range(6),
"id" : ['B', 'A', 'B', 'C', 'C', 'A' ]
})
df1
実行結果:
df2 = pd.DataFrame({"d2" : range(2),"id" : ['A', 'B']})
df2
実行結果:
この2つの表をマージしてくっつけます。
pd.merge(df1, df2)
実行結果:
デフォルトでのマージは、共通のラベルである今回の場合『id』に紐づけて、データをくっつけます。
pd.merge(df1, df2)の引数を逆にした場合は以下になります。
pd.merge(df2,df1)
実行結果:
マージ、紐づけ指定
『id』をキーワードとして紐づけしたい場合、on=" "の引数を指定しておく。
pd.merge(df2,df1,on="id")
実行結果:
デフォルトと一緒ですが、id に紐づいてデータが統合されます。
欠損データでもマージ可能
2つ以上のデータを統合する場合、全てが同一条件の行列だと統合は楽だが、必ずしもそうではない。一方が内容リッチ、もう一方は簡素な場合もある。
先に作成したDataFrameもdf1とdf2では内容が異なる。
左のデータに寄せたい場合
df1に合わせてdf2を統合したい場合は、how=”left”とすればよし。
pd.merge(df1, df2, on='id', how='left')
実行結果:
右のデータに寄せたい場合
右の場合は、how='right'を引数に加える。
pd.merge(df1, df2, on='id', how='right')
実行結果:
全てのデータを統合し、残したい場合
how='outer'を引数に加える。
pd.merge(df1, df2, on='id', how='outer')
実行結果:
は
尚、 how='inner'は、デフォルト時と結果が同じです。