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()]

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

你可能感兴趣的:(pandas,python)