InvalidIndexError: Reindexing only valid with uniquely valued Index objects 处理

        不想了解原因,直接对处理的数据进行如下处理:

DataFrame= DataFrame.loc[:,~DataFrame.columns.duplicated()]

        原因与分析

        当在为DataFrame添加新的数据时,或者两个DataFrame合并时可能会报错:InvalidIndexError: Reindexing only valid with uniquely valued Index objects。

        在网络上找了无数个资源,基本上都没有解决本质上的问题,有删除Index的有ResetIndex的,但是都不管用,仔细研读报错信息,是要保持Index的唯一性,可以理解为两个层面:1、行的Index,也就是行的索引,这个如果是用Append,或者concat方法会自动增加索引,所以在行追加的时候,应该是不会报此类型的。2、列的Index,也就是列的索引,如果使用Append、concat方法合并数据,一旦某一个DataFrame列名存在重复的情况下,百分之百会InvalidIndexError: Reindexing only valid with uniquely valued Index objects。

        

len(DataFrame.columns),len(set(DataFrame.columns))

        一旦以上两个输出结果不一致的话,一定会InvalidIndexError: Reindexing only valid with uniquely valued Index objects,原因就在于DataFrame有重复的列名。此时就需要查看哪些列名有重复的。

DataFrame.columns.value_counts()

会有以下输出:

C0ZY02    2
COHC01    1
COHC01    1
COHC01    1

可见第一个特征出现了两次,解决办法是

DataFrame= DataFrame.loc[:,~DataFrame.columns.duplicated()]

直接删除重复的列,即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值