LoginSignup
57
78

More than 5 years have passed since last update.

[Python] pandas データ結合

Last updated at Posted at 2018-09-18

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)

image.png

inner join

# IDで内部結合
pd.merge(data_frame1, data_frame2, how="inner" ,on="ID")

↓  ↓  ↓
image.png

left join

# left join
pd.merge(data_frame1, data_frame2, how="left", on="ID")

↓  ↓  ↓
image.png

outer join

# outer join
pd.merge(data_frame1, data_frame2, how="outer")

↓  ↓  ↓
image.png

indexによる結合

# indexによる結合
pd.merge(data_frame1, data_frame2, left_index=True, right_on="index_num")

↓  ↓  ↓
image.png

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)

image.png

concat

# concat
pd.concat([data_frame1, data_frame3])

↓  ↓  ↓
image.png

参考

Pandas でデータフレームの結合 (マージ, JOIN)

57
78
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
78