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

実行結果:

画像3

df2 = pd.DataFrame({"d2" : range(2),"id" : ['A', 'B']})
df2

実行結果:

画像3

この2つの表をマージしてくっつけます。

pd.merge(df1, df2)

実行結果:

画像3

デフォルトでのマージは、共通のラベルである今回の場合『id』に紐づけて、データをくっつけます。

pd.merge(df1, df2)の引数を逆にした場合は以下になります。

pd.merge(df2,df1)

実行結果:

画像4


マージ、紐づけ指定

『id』をキーワードとして紐づけしたい場合、on=" "の引数を指定しておく。

pd.merge(df2,df1,on="id")

実行結果:

画像5

デフォルトと一緒ですが、id に紐づいてデータが統合されます。


欠損データでもマージ可能

2つ以上のデータを統合する場合、全てが同一条件の行列だと統合は楽だが、必ずしもそうではない。一方が内容リッチ、もう一方は簡素な場合もある。

先に作成したDataFrameもdf1とdf2では内容が異なる。

画像6

左のデータに寄せたい場合

df1に合わせてdf2を統合したい場合は、how=”left”とすればよし。

pd.merge(df1, df2, on='id', how='left')

実行結果:

画像7


右のデータに寄せたい場合

右の場合は、how='right'を引数に加える。

pd.merge(df1, df2, on='id', how='right')

実行結果:

画像8


全てのデータを統合し、残したい場合

how='outer'を引数に加える。

pd.merge(df1, df2, on='id', how='outer')

実行結果:

画像9

尚、 how='inner'は、デフォルト時と結果が同じです。

この記事が気に入ったらサポートをしてみませんか?