[Python/pandas]mergeでDataFrameを結合する
mergeで2つのDataFrameを結合できる
複数のDataFrameを、共通の列でまとめることができます。
SQLのJOINに近い使い方ができます。
基本的な使い方
pd.merge([データ1], [データ2], on='{カラム名}',how='{結合方法}')
例
データ
2つのテーブルがあり、codeが共通のカラムです。
両方にあるcodeと片方にしかないcodeがそれぞれあります。
merge_names.tsv
code name
A hoge
B fuga
C piyo
D foo
E bar
merge_values.tsv
code value
A 10
B 100
C 200
D 300
G 1000
コード
merge_sample.py
import pandas as pd
names = pd.read_csv('tests/merge_names.tsv',sep='\t')
values = pd.read_csv('tests/merge_values.tsv',sep='\t')
left_join = pd.merge(names, values, on='code', how='left')
print('==========left_join==========')
print(left_join)
right_join = pd.merge(names, values, on='code', how='right')
print('==========right_join==========')
print(right_join)
inner_join = pd.merge(names, values, on='code', how='inner')
print('==========inner_join==========')
print(inner_join)
outer_join = pd.merge(names, values, on='code', how='outer')
print('==========outer_join==========')
print(outer_join)
出力結果
==========left_join==========
code name value
0 A hoge 10.0
1 B fuga 100.0
2 C piyo 200.0
3 D foo 300.0
4 E bar NaN
==========right_join==========
code name value
0 A hoge 10
1 B fuga 100
2 C piyo 200
3 D foo 300
4 G NaN 1000
==========inner_join==========
code name value
0 A hoge 10
1 B fuga 100
2 C piyo 200
3 D foo 300
==========outer_join==========
code name value
0 A hoge 10.0
1 B fuga 100.0
2 C piyo 200.0
3 D foo 300.0
4 E bar NaN
5 G NaN 1000.0
まとめ
pd.groupby()と組み合わせて、テキストデータをDBに入れたりせずとも簡単な集計はできそうですね。
ディスカッション
コメント一覧
まだ、コメントがありません