关键错误将2个数据帧加在一起

时间:2018-08-27 09:39:29

标签: python pandas

我要加在一起的

df1df2组成df3。部分数据帧(因为它们很大)如下所示

df1

            total_pnl_per_pos          invested    
date 
2015-03-17           0.330533     145790.529585   
2015-03-18          -0.132040     152116.458134       
2015-03-19           0.189508     141114.361229         
2015-03-20           0.346906     323712.355051        
2015-03-21          -0.004500     149999.909424          

df2

            total_pnl_per_pos     invested  
date                                                                
2015-03-16          -0.009346   3843277.00  
2015-03-17          -0.025422   4495925.00  
2015-03-18          -0.093223   4233412.00  
2015-03-19          -0.144945   4340475.00  
2015-03-20          -0.030945   6107379.00  

我希望df3df1 + df1并看起来像这样:

            total_pnl_per_pos      invested
date        
2015-03-16          -0.009346       3843277
2015-03-17           0.305111    4641715.53
2015-03-18          -0.225263   4385528.458
2015-03-19           0.044563   4481589.361
2015-03-20           0.315961   6431091.355
2015-03-21            -0.0045   149999.9094

请不要按日期对df1和df2进行索引,并且每个数据帧中的日期不一定相同。

我尝试使用:

df3= df1.set_index('date').add(df2.set_index('date'), fill_value=0).reset_index()

df3= pd.concat([df1, df2]).groupby('date').sum().reset_index()

但是,当我尝试两种不同的解决方案时,出现KeyError: 'date'错误。有人可以让我知道我哪里出了问题。

谢谢

1 个答案:

答案 0 :(得分:1)

似乎date已被索引。换句话说,您不能将date分配为索引两次。因此,下面的方法可以工作:

df3 = df1.add(df2, axis='index', fill_value=0)

输出:

            total_pnl_per_pos      invested
date                                       
2015-03-16          -0.009346  3.843277e+06
2015-03-17           0.305111  4.641716e+06
2015-03-18          -0.225263  4.385528e+06
2015-03-19           0.044563  4.481589e+06
2015-03-20           0.315961  6.431091e+06
2015-03-21          -0.004500  1.499999e+05

希望这会有所帮助。