Python中将两个DataFrame拼接时遇到:InvalidIndexError: Reindexing only valid with uniquely valued Index objects

博主在完成爬取手机型号需求时,执行初版代码遇到Reindexing仅对唯一值的索引对象有效的错误。在Stack Overflow上尝试建议方法仍报错,将axis属性置为1虽不报错但新数据在列上追加。最终通过删除df中的列,实现新手机机型与df正常拼接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、遇到问题

今天接到爬取手机型号的需求,在完成初版以后执行时,发现遇到了 Reindexing 仅对唯一值的索引对象有效。中间细节省略,就摘出相关的代码:

df=pd.DataFrame(columns=['手机model','手机机型','手机全称','手机机型'])   

一个字典中插入了相关数据:
phone_mapping_model = {}
phone_mapping_model['手机model'] = "1"
phone_mapping_model['手机全称'] = "2"
phone_mapping_model['手机品牌'] = "3"
phone_mapping_model['手机机型'] = "4"

#将字段转为DataFrame
df1 = pd.DataFrame(phone_mapping_model, index=[0])

#将两个DataFrame进行拼接
df = pd.concat([df, df1],  axis = 0) 

通过Debug发现在把DataFrame(df1)拼接到最终的DataFrame(df)中时,就报错了:
pandas.errors.InvalidIndexError: Reindexing only valid with uniquely valued Index objects
请添加图片描述

二、排查问题

Stack Overflow上 有大佬建议可以缓解该错误,并且不需更改数据或删除重复数据。只需使用DataFrame.reset_index创建一个新索引,我就改了试试:

df1 = pd.DataFrame(phone_mapping_model, index=[0])
df.reset_index(inplace=True, drop=True)
df = pd.concat([df, df1],  axis = 0)  

还是报一样的错:
请添加图片描述

然后我将axis属性置为1看了看,可以发现不会报错了,只是每次新的手机型号在列上进行追加:

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

请添加图片描述

三、问题解决

其实非常简单,把其中 df 中的列删掉就可以正常实现每次将新获取的手机机型与df进行拼接:

df=pd.DataFrame()   #df=pd.DataFrame(columns=['手机model','手机机型','手机全称','手机机型'])   

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青山孤客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值