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 将多个数据框合并并更新为一列的主要内容,如果未能解决你的问题,请参考以下文章

Python Pandas:将数据框的列与列名合并为一列

循环浏览文件夹以将多个 Excel 工作表合并为一列

Dask - 将多列合并为一列

R语言tidyr包Unite()函数实战详解:多个数据列合并为一列

Excel - 将多列合并为一列

PostgreSQL 相当于 Pandas 外部合并