mergeとconcatについてメモ。
pandas読み込み
import pandas as pd
from pandas import Series, DataFrame
結合の仕方
merge
pd.merge(left_DataFrame, right_DataFrame,
how='inner',
on=None, left_on=None, right_on=None,
left_index=False, right_index=False,
sort=False,
suffixes=('_x', '_y'))
引数 | 説明 |
---|---|
how | joinの仕方。 ('left', 'right', 'outer', 'inner') defaultは'inner' |
axis | 行か列か、0 or 1 |
left_on | 左側の結合する列またはインデックスの名前。 |
right_on | 右側の結合する列またはインデックスの名前。 |
left_index | 左側のインデックスでマージする時。boolean, default False |
right_index | 右側のインデックスでマージする時。boolean, default False |
sort | 結果の結合キーを辞書的にソート。順序はjoinの仕方によって異なる。boolean, default False |
suffixes | 両方で重複する列名に接尾語を付ける。 hoge_1,hoge_2みたいな。defaultは'_x','_y' |
実際にデータでやってみる。
# データ1の準備
attri_data1 = {'ID':['100','101','102','105','106']
,'city':['Tokyo','Chiba','Kyoto','Gunma','Tokyo']
,'birth_year':[1991,1992,1985,1996,1981]
,'name':['Yamada','Sato','Suzuki','Kitamura','Aoki']}
data_frame1 = DataFrame(attri_data1)
# データ2の準備
attri_data2 = {'ID':['100','101','102','103','104']
,'math':[34,77,45,81,98]
,'English':[47,64,16,53,37]
,'sex':['F','M','F','F','M']
,'index_num':[0,1,2,3,4]}
data_frame2 = DataFrame(attri_data2)
inner join
# IDで内部結合
pd.merge(data_frame1, data_frame2, how="inner" ,on="ID")
left join
# left join
pd.merge(data_frame1, data_frame2, how="left", on="ID")
outer join
# outer join
pd.merge(data_frame1, data_frame2, how="outer")
indexによる結合
# indexによる結合
pd.merge(data_frame1, data_frame2, left_index=True, right_on="index_num")
concat
mergeと似ているが、基本的にはデータの下に、そのままもう1つのデータをくっつける時に使う。
公式
実際にデータでやってみる。
# データ1の準備
attri_data1 = {'ID':['100','101','102','105','106']
,'city':['Tokyo','Chiba','Kyoto','Gunma','Tokyo']
,'birth_year':[1991,1992,1985,1996,1981]
,'name':['Yamada','Sato','Suzuki','Kitamura','Aoki']}
data_frame1 = DataFrame(attri_data1)
# データ3の準備
attri_data3 = {'ID':['110','111','112']
,'city':['Akita','Okinawa','Fukuoka']
,'birth_year':[1992,1987,1990]
,'name':['Ishida','Takada','Shimada']}
data_frame3 = DataFrame(attri_data3)
concat
# concat
pd.concat([data_frame1, data_frame3])