データフレームを統合かんすするには、行方向への統合と列方向への統合があります。列方向への統合にはmerge関数を使います。
concat関数を使えば、行方向、列方向どちらにも結合できますが、単純に結合するだけで、merge関数のようなキーによる統合などはできません。
merge関数
pd.merge(df1,df2,on=’列名’,how=’オプション’)
行方向への統合はマージで行います。2つのデータフレームのある列をキーにして、同じ値のものについて統合します。
import pandas as pd
df1=pd.DataFrame({
'都市':['東京','名古屋','大阪','福岡'],
'人口':[1,2,3,4],
})
df2=pd.DataFrame({
'都市':['札幌','東京','名古屋','大阪'],
'面積':[4,3,2,1],
})
print(df1)
print(df2)
出力
都市 人口
0 東京 1
1 名古屋 2
2 大阪 3
3 福岡 4
都市 面積
0 札幌 4
1 東京 3
2 名古屋 2
3 大阪 1
重なっているサンプルだけ(how=’inner’)
merge(df1,df2,on=’列名’,how=’inner’)
統合のキーとなる列をon=で指定します。重なっているサンプルだけを統合する場合は、how=’inner’を使います。
df3=pd.merge(df1,df2,on='都市',how='inner')
print(df3)
出力
都市 人口 面積
0 東京 1 3
1 名古屋 2 2
2 大阪 3 1
サンプルすべて(how=’outer’)
merge(df1,df2,on=’列名’,how=’outer’)
統合のキーとなる列をon=で指定します。サンプルすべてを統合する場合は、how=’outer’を使います。結果は名古屋が最初になっています。都市の順序は機種や環境に依存するようです。
df3=pd.merge(df1,df2,on='都市',how='outer')
print(df3)
出力
都市 人口 面積
0 名古屋 2.0 2.0
1 大阪 3.0 1.0
2 札幌 NaN 4.0
3 東京 1.0 3.0
4 福岡 4.0 NaN
インデックスによるmerge
pd.merge(df1,df2,left_index=True,right_index=True)
上の例は、ある列をkeyにして、それに基づいてまとめるものですが、データフレームには行ごとにインデックスがついているので、それをもとにマージするということが考えられます。left_index=True, right_index=Trueを付け加えます。
カラム名の同じものがあると、_x、_yが後ろに付いて区別されます。
df3=pd.merge(df1,df2,left_index=True,right_index=True)
print(df3)
出力
都市_x 人口 都市_y 面積
0 東京 1 札幌 4
1 名古屋 2 東京 3
2 大阪 3 名古屋 2
3 福岡 4 大阪 1
concat関数
pd.concat([df1,df2],axis=0)
concat関数は、表をそのままの形で、結合します。行を重ねる形で結合する方法(axis=0,デフォルト)と、列を増やす形で結合する方法(axis=1)があります。
上記と同じ例を使います。
df1
都市 人口
0 東京 1
1 名古屋 2
2 大阪 3
3 福岡 4
df2
都市 面積
0 札幌 4
1 東京 3
2 名古屋 2
3 大阪 1
行方向の場合
df3=pd.concat([df1,df2])
print(df3)
出力
都市 人口 面積
0 東京 1.0 NaN
1 名古屋 2.0 NaN
2 大阪 3.0 NaN
3 福岡 4.0 NaN
0 札幌 NaN 4.0
1 東京 NaN 3.0
2 名古屋 NaN 2.0
3 大阪 NaN 1.0
列方向の場合
df3=pd.concat([df1,df2],axis=1)
print(df3)
出力
都市 人口 都市 面積
0 東京 1 札幌 4
1 名古屋 2 東京 3
2 大阪 3 名古屋 2
3 福岡 4 大阪 1
経済統計の使い方では、統計データの入手法から分析法まで解説しています。

- 【python】Trutleの基本
- 【python】pythonをダウンロードして使う場合
- 【python】ランダムフォレストによる予測(sklearn)
- 【python】自己回帰モデルによる予測(statsmodels)
- 【Python】テンソルの操作(Pytorch)