gpt4 book ai didi

python - 使用非唯一索引合并多个 pandas 数据集

转载 作者:太空宇宙 更新时间:2023-11-03 17:01:03 25 4
gpt4 key购买 nike

我有几个类似结构的 pandas 数据帧存储在字典中。我通过以下方式访问数据框。

ex_dict[df1]
date df1price1 df1price2
10-20-2015 100 150
10-21-2015 90 100

我想按日期将所有这些数据帧合并到一个数据帧中。日期重叠,但并非所有数据帧都包含所有日期。

我需要离开这里

df1
date df1price1 df1price2
10-20-2015 100 150
10-21-2015 90 100
10-22-2015 100 140

df2
date df2price1 df2price2
10-20-2015 110 140
10-21-2015 90 110
10-23-2015 110 120

df3
date df3price1 df3price2
10-20-2015 100 150
10-22-2015 90 100
10-23-2015 80 130

对此:

df_all
date df1price1 df1price2 ... df3price1 df3price2
10-20-2015 100 150 ... 100 150
10-21-2015 90 100 ... NaN NaN
10-22-2015 100 140 ... 90 100
10-23-2015 NaN NaN ... 80 130

我已经尝试了很多东西,但我无法让它工作,除非一次重复合并 2 个数据帧以创建一个新的数据帧,然后重新合并到该数据帧上。我需要合并的数据帧数量在 4 到 10 之间变化,所以我需要一种方法来自动执行此操作(因此我认为传递字典可能会起作用)。

对此的任何帮助都将非常感激。

最佳答案

您可以使用 concat 后跟 groupby('date') 来展平结果。

In [22]: pd.concat([df1,df2,df3]).groupby('date').max()
Out[22]:
df1price1 df1price2 df2price1 df2price2 df3price1 df3price2
date
10-20-2015 100 150 110 140 100 150
10-21-2015 90 100 90 110 NaN NaN
10-22-2015 100 140 NaN NaN 90 100
10-23-2015 NaN NaN 110 120 80 130

编辑:正如 BrenBarn 在评论中指出的那样,如果将连接列设置为数据帧的索引,则可以使用 concat(axis=1):

df1.index = df1.date
df2.index = df2.date
df3.index = df3.date

In [44]: pd.concat([df1,df2,df3],axis=1)
Out[44]:
date df1price1 df1price2 date df2price1 \
10-20-2015 10-20-2015 100 150 10-20-2015 110
10-21-2015 10-21-2015 90 100 10-21-2015 90
10-22-2015 10-22-2015 100 140 NaN NaN
10-23-2015 NaN NaN NaN 10-23-2015 110

df2price2 date df3price1 df3price2
10-20-2015 140 10-20-2015 100 150
10-21-2015 110 NaN NaN NaN
10-22-2015 NaN 10-22-2015 90 100
10-23-2015 120 10-23-2015 80 130

关于python - 使用非唯一索引合并多个 pandas 数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34984985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com