import pandas as pd
from pandas import Series, DataFrame
import numpy as np
# DataFrameを2つ用意します。
df_left = DataFrame({'key': ['X','Y','Z','X','Y'],
'data': range(5)})
df_right = DataFrame({'group_data': [10, 20]}, index=['X', 'Y'])
#Show
df_left
#Show
df_right
# key列とindexを使ったマージができます。
pd.merge(df_left,df_right,left_on='key',right_index=True)
# outerも使えます。
pd.merge(df_left,df_right,left_on='key',right_index=True,how='outer')
# 階層的なindexの場合
df_left_hr = DataFrame({'key1': ['SF','SF','SF','LA','LA'],
'key2': [10, 20, 30, 20, 30],
'data_set': np.arange(5.)})
df_right_hr = DataFrame(np.arange(10).reshape((5, 2)),
index=[['LA','LA','SF','SF','SF'],
[20, 10, 10, 10, 20]],
columns=['col_1', 'col_2'])
df_left_hr
# 階層的なindexの例
df_right_hr
# leftは列名で、rightはindexでマージします。
pd.merge(df_left_hr,df_right_hr,left_on=['key1','key2'],right_index=True)
# outer
pd.merge(df_left_hr,df_right_hr,left_on=['key1','key2'],right_index=True,how='outer')
# joinというメソッドもあります
df_left.join(df_right)