2017-10-04 69 views
0

我有两个dataframes:加入熊猫dataframes在Python具有相同索引多次

>>>import import pandas as pd 
>>>df1: 

       DD_PRICE 
DATE       
2013-09-19 20:55:00 3.516 
2013-09-19 20:55:00 3.516 
2013-09-19 20:55:00 3.516 
2013-09-19 20:55:00 -4.476 

>>>df2: 
       CAPI_PRICE 
DATE       
2013-09-19 20:55:00 3.516 
2013-09-19 20:55:00 3.516 
2013-09-19 20:55:00 3.516 
2013-09-19 20:55:00 -4.476 

现在,当我运行:

joint_df = df1.join((df2), how='outer') 

joint_df看起来是这样的:

    DD_PRICE CAPI_PRICE 
DATE         
2013-09-19 20:55:00 3.516 3.516 
2013-09-19 20:55:00 3.516 3.516 
2013-09-19 20:55:00 3.516 3.516 
2013-09-19 20:55:00 3.516 -4.476 
2013-09-19 20:55:00 3.516 3.516 
2013-09-19 20:55:00 3.516 3.516 
2013-09-19 20:55:00 3.516 3.516 
2013-09-19 20:55:00 3.516 -4.476 
2013-09-19 20:55:00 3.516 3.516 
2013-09-19 20:55:00 3.516 3.516 
2013-09-19 20:55:00 3.516 3.516 
2013-09-19 20:55:00 3.516 -4.476 
2013-09-19 20:55:00 -4.476 3.516 
2013-09-19 20:55:00 -4.476 3.516 
2013-09-19 20:55:00 -4.476 3.516 
2013-09-19 20:55:00 -4.476 -4.476 

这不是我想要的...

理想我想joint_df看起来像这样:

    DD_PRICE CAPI_PRICE 
DATE         
2013-09-19 20:55:00 3.516 3.516 
2013-09-19 20:55:00 3.516 3.516 
2013-09-19 20:55:00 3.516 3.516 
2013-09-19 20:55:00 -4.476 -4.476 

我如何得到这个工作?尝试了mergejoin参数的不同组合,但我无法使它工作!

+1

您有重复的索引。如果两个数据框中的索引顺序始终相同,请使用'df1 ['CAPI_PRICE'] = df2 ['CAPI_PRICE']。values'? – Zero

+0

'df = pd.concat([df1,df2],axis = 1)'不起作用? – jezrael

回答

1

看来你只能使用concat - 默认情况下有外部连接:

df = pd.concat([df1, df2], axis=1) 
print (df) 
        DD_PRICE CAPI_PRICE 
DATE          
2013-09-19 20:55:00  3.516  3.516 
2013-09-19 20:55:00  3.516  3.516 
2013-09-19 20:55:00  3.516  3.516 
2013-09-19 20:55:00 -4.476  -4.476 
0

您可以通过从第二个数据帧复制像这样尝试只是第一个数据帧上添加新列:

df1['CAPI_PRICE']=df2['CAPI_PRICE']