You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并DataFrame时遇ValueError:无法插入key_0,已存在的问题求助

解决DataFrame合并时的ValueError: cannot insert key_0, already exists问题

报错原因

使用on=df.index合并时,Pandas会自动将索引转换为名为key_0的列,但合并过程中尝试插入该列时,发现当前DataFrame中已存在同名列(或合并逻辑重复生成了该列),导致冲突报错。

解决方案

由于两个DataFrame长度完全相同,推荐以下几种简洁的处理方式:

方案1:使用pd.concat横向拼接(优先推荐)

直接按列拼接索引对齐的两个DataFrame,逻辑最简单:

ohe = OneHotEncoder()
df_Holiday = pd.DataFrame(ohe.fit_transform(df[['StateHoliday']]).toarray(),
                      columns=['public holiday', 'Easter holiday','Christmas holiday','No Holiday'])

df = pd.concat([df, df_Holiday], axis=1)

方案2:使用merge并指定索引作为合并键

通过left_index=True和right_index=True直接基于索引合并,避免生成key_0列:

ohe = OneHotEncoder()
df_Holiday = pd.DataFrame(ohe.fit_transform(df[['StateHoliday']]).toarray(),
                      columns=['public holiday', 'Easter holiday','Christmas holiday','No Holiday'])

df = df.merge(df_Holiday, left_index=True, right_index=True)

方案3:对齐索引后再合并

提前将df_Holiday的索引设置为与原df一致,再进行合并:

ohe = OneHotEncoder()
df_Holiday = pd.DataFrame(ohe.fit_transform(df[['StateHoliday']]).toarray(),
                      columns=['public holiday', 'Easter holiday','Christmas holiday','No Holiday'],
                      index=df.index)  # 对齐索引

df = df.merge(df_Holiday, left_index=True, right_index=True)

内容的提问来源于stack exchange,提问作者Ashutosh Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:45:52