import numpy as np
import pandas as pd
from pandas import DataFrame
# サンプルになるDataFrameを作ります。
dframe1 = DataFrame({'key':['X','Z','Y','Z','X','X'],'data_set_1': np.arange(6)})
dframe1
# もう一つ別のDataFrameを作ります。
dframe2 = DataFrame({'key':['Q','Y','Z'],'data_set_2':[1,2,3]})
dframe2
#mergeメソッドを使います。これは、多対一
pd.merge(dframe1,dframe2)
# 列名を指定できます。
pd.merge(dframe1,dframe2,on='key')
# 列名を指定して、どのようにマージするかも選べます。
pd.merge(dframe1,dframe2,on='key',how='left')
# howの引数を変えてみましょう。
pd.merge(dframe1,dframe2,on='key',how='right')
# keyに関して両方のDataFrameのデータを使いたい場合
pd.merge(dframe1,dframe2,on='key',how='outer')
# 今度は多対多
# 両方のDataFrameで、keyに関して複数の行がある。
dframe3 = DataFrame({'key': ['X', 'X', 'X', 'Y', 'Z', 'Z'],
'data_set_3': range(6)})
dframe4 = DataFrame({'key': ['Y', 'Y', 'X', 'X', 'Z'],
'data_set_4': range(5)})
#Show the merge
pd.merge(dframe3, dframe4)
# 複数の列名に関して、mergeを使うこともできます。
df_left = DataFrame({'key1': ['SF', 'SF', 'LA'],
'key2': ['one', 'two', 'one'],
'left_data': [10,20,30]})
df_right = DataFrame({'key1': ['SF', 'SF', 'LA', 'LA'],
'key2': ['one', 'one', 'one', 'two'],
'right_data': [40,50,60,70]})
pd.merge(df_left, df_right, on=['key1', 'key2'], how='outer')
# 列名が重複している場合は、自動的にsuffix(接尾辞)を付けてくる
pd.merge(df_left,df_right,on='key1')
# 追加する文字列を指定することも可能です。
pd.merge(df_left,df_right, on='key1',suffixes=('_lefty','_righty'))
# 公式ドキュメントはこちら
url = 'http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.merge.html'