pandas 将多个数据框合并并更新为一列
Posted
技术标签:
【中文标题】pandas 将多个数据框合并并更新为一列【英文标题】:pandas merge and update multiple dataframes into one column 【发布时间】:2018-03-09 21:26:48 【问题描述】:我有三个数据框,索引为日期和价格列。我想将三个数据框合并为一个并合并价格列。我尝试按照这篇文章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】:你需要 concat 与 drop 重复,即
df4 = pd.concat(product_list).drop_duplicates('date',keep='last')
日期价格
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')]
【讨论】:
以上是关于pandas 将多个数据框合并并更新为一列的主要内容,如果未能解决你的问题,请参考以下文章