pandas将多个数据帧合并并更新为一列

时间:2017-09-28 08:04:28

标签: python pandas

我有三个数据框,索引为date和price列。我想将三个数据框合并为一个合并价格列。我按照此帖Python: pandas merge multiple dataframes的建议尝试合并,但结果与轴= 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

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

你需要连续删除重复,即

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')]