スポンサーリンク
Pandasで2つのDataFrameをindexをキーにマージ
pd.merge()で2つのDataFrameをマージできます。
indexをキーににするには、left_indexもしくはright_indexをTrueに設定します。
両方のindexをキーにするには両方TrueにすればOKです。
print(pd.merge(data01, data02, left_index=True, right_index=True))
ただ、デフォルトでは、how='inner'となっていて、
2つのDataFrameのORでマージしたい場合には、
how='outer'とします。
print(pd.merge(data01, data02, how='outer', left_index=True, right_index=True))
下記のように、片方で欠けている箇所はNaNとなります。
2016-06-01 10.0 1.0 2016-06-02 20.0 2.0 2016-06-03 NaN 3.0 2016-06-04 30.0 NaN 2016-06-05 40.0 NaN 2016-06-06 NaN 4.0
スポンサーリンク
サンプルコード
例えば、下記のcsvファイルがあったとします。
$ cat csv01.txt 20160601,10 20160602,20 20160604,30 20160605,40
$ cat csv02.txt 20160601,1 20160602,2 20160603,3 20160606,4
下記がサンプルコードになります。
$ cat sample.py #!/usr/bin/env python3 # coding: UTF-8 import pandas as pd data01 = pd.read_csv('csv01.txt', names=('date', 'val1'), index_col='date', parse_dates=True) data02 = pd.read_csv('csv02.txt', names=('date', 'val2'), index_col='date', parse_dates=True) print(data01) print(data02) print(pd.merge(data01, data02, left_index=True, right_index=True)) print(pd.merge(data01, data02, how='outer', left_index=True, right_index=True))
下記が実行結果になります。
$ ./sample.py val1 date 2016-06-01 10 2016-06-02 20 2016-06-04 30 2016-06-05 40 val2 date 2016-06-01 1 2016-06-02 2 2016-06-03 3 2016-06-06 4 val1 val2 date 2016-06-01 10 1 2016-06-02 20 2 val1 val2 date 2016-06-01 10.0 1.0 2016-06-02 20.0 2.0 2016-06-03 NaN 3.0 2016-06-04 30.0 NaN 2016-06-05 40.0 NaN 2016-06-06 NaN 4.0
スポンサーリンク