python - 在 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
有人可以解释我在这里做错了什么吗?
解决方案
您应该确保您的索引完全相同。这是一个最小示例,显示您可以连接重复索引,只要它们相同:
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
即使重新排序其中一个索引也会导致它中断。另一种解决方案是在连接之前删除重复索引,请参阅删除具有重复索引的行。
推荐阅读
- reactjs - Relay Modern:在optimisticUpdater中删除记录
- reactjs - 复选框选中的属性在 reactJS 中不起作用
- spring-boot - 如何在不运行tomcat的情况下运行springboot测试?
- go - 不断重新连接到 Cassandra
- html - Twig 模板变量短代码不显示
- visual-studio - 无法设置 CUDA 编译环境
- angular - 如何在 *ngFor 下拉列表中添加搜索过滤器?
- r - 将三张图合二为一
- python - 打印数据帧的函数,它使用 df 名称作为参数
- javascript - 如何过滤掉数组中不包含特定值的单词?