【发布时间】:2023-03-08 10:40:01
【问题描述】:
我已经查看了许多与此错误相关的问题。我正在运行 pandas '0.10.1'
df = DataFrame({'A' : np.random.randn(5),
'B' : np.random.randn(5),'C' : np.random.randn(5),
'D':['a','b','c','d','e'] })
#gives error
df.take([2,0,1,2,3], axis=1).drop(['C'],axis=1)
#works fine
df.take([2,0,1,2,1], axis=1).drop(['C'],axis=1)
我唯一能看到的是,在前一种情况下,我有非数字列,这似乎会以某种方式影响索引,但以下命令返回空:
df.take([2,0,1,2,3], axis=1).index.get_duplicates()
Reindexing error makes no sense 似乎不适用,因为我的旧索引是唯一的。
据我所知,我的索引似乎是唯一的,使用此命令 df.take([2,0,1,2,3], axis=1).index.get_duplicates() 来自此问答:problems with reindexing dataframes: Reindexing only valid with uniquely valued Index objects
"Reindexing only valid with uniquely valued Index objects" 好像不适用
我认为我的 pandas 版本# 还可以,所以这应该不是问题 pandas Reindexing only valid with uniquely valued Index objects
【问题讨论】:
-
您正在处理列,它们显然是非唯一的,因为根据定义,您正在使用重复项。你到底想做什么?
-
你是对的。但请注意,在这两种情况下,列在获取后都不是唯一的,但在前一种情况下它会返回错误,而在后一种情况下则没有错误并返回正确的结果。我的实际用例是与机器学习相关的,其中我有一个 MxN 矩阵,表示 N 空间中的 M 个特征向量。我想每 10-15 列重复一次分类列,以便在滚动查看特征向量时不会丢失分类。话虽如此,我将不胜感激上述问题的解决方案/解释
-
可能是一个错误:github.com/pydata/pandas/issues/6240;您通常要小心重复的列。您不应该仅仅为了查看事物而创建重复的列。