首页 > 解决方案 > 在 pandas 中连接具有相同索引的 3 个 df

问题描述

我在连接具有相同索引的 3 个数据帧时遇到问题(在这种情况下,索引是日期)。我正在尝试将三个不同的数据帧绘制到一个绘图图上,并认为组合数据帧将是最简单的。目前我正在使用如下代码。

pd.concat([df1,df2,df3], axis = 1)

但我提出了以下错误。

ValueError: cannot reindex from a 
duplicate axis

我的数据框的结构如下所示。

           A
7/28/2018  4 
7/29/2018  5

           B
7/28/2018  3
7/29/2018  4

           C
7/28/2018  1
7/29/2018  2

我想要以下结果:

           A B C
7/28/2018  4 3 1
7/29/2018  5 4 2

有人可以解释我在这里做错了什么吗?

标签: pythonpandasplotly

解决方案


您应该确保您的索引完全相同。这是一个最小示例,显示您可以连接重复索引,只要它们相同:

idx = ['7/28/2018', '7/28/2018', '7/29/2018']

df_A = pd.DataFrame({'A': [1, 2, 3]}, index=idx)
df_B = pd.DataFrame({'B': [4, 5, 6]}, index=idx)
df_C = pd.DataFrame({'C': [7, 8, 9]}, index=idx)

res = pd.concat([df_A, df_B, df_C], axis=1)

print(res)

           A  B  C
7/28/2018  1  4  7
7/28/2018  2  5  8
7/29/2018  3  6  9

即使重新排序其中一个索引也会导致它中断。另一种解决方案是在连接之前删除重复索引,请参阅删除具有重复索引的行


推荐阅读