我有三个数据框,索引为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
有什么建议吗?
答案 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')]