2017-09-28 187 views
1

我有三个数据框,索引作为日期和价格列。我想将三个数据框合并为一个并合并价格列。我试着合并,正如这篇文章Python: pandas merge multiple dataframes所建议的,但结果与axis = 1的连接相同。熊猫合并并将多个数据帧更新为一列

chained_price = reduce(lambda left, right: pd.merge(left, right, left_index=True, right_index = True, 
                how='right'), product_list) 

product_list是一个包含三个df的列表。

   price 
date     
2013-09-10 1.000000 
2013-09-11 1.011578 
2013-09-12 -1.006452 

      price 
date    
2013-09-11 3.011578 
2013-09-12 5.006452 
2013-09-13 6.000544 

      price 
date    
2013-09-12 8.011578 
2013-09-13 7.006452 
2013-09-14 10.000544 

预期的结果:

  price 
date 
2013-09-10 1.000000 
2013-09-11 3.011578 
2013-09-12 8.011578 
2013-09-13 7.006452 
2013-09-14 10.000544 

有什么建议?

回答

4

你需要滴重复CONCAT即

df4 = pd.concat(product_list).drop_duplicates('date',keep='last') 
 
     date  price 
0 2013-09-10 1.000000 
0 2013-09-11 3.011578 
0 2013-09-12 8.011578 
1 2013-09-13 7.006452 
2 2013-09-14 10.000544 

如果日期是指数则

df4 = pd.concat(product_list) 
df4[~df4.index.duplicated(keep='last')]