合并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
相关产品推荐
相关产品推荐

