我查看了许多与此错误相关的问题。我正在跑熊猫'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()来自此Q& A:{{ 3}}
problems with reindexing dataframes: Reindexing only valid with uniquely valued Index objects似乎不适用
我认为我的pandas版本#是正常的,所以这应该是bug不应该是问题"Reindexing only valid with uniquely valued Index objects"
答案 0 :(得分:7)
首先,我相信您打算使用以下命令测试重复项:
df.take([2,0,1,2,3],axis=1).columns.get_duplicates()
因为如果使用索引而不是列,那么显然会返回一个空数组,因为随机浮点值不会重复。上述命令按预期返回:
['C']
其次,我认为你是对的,非数字列正在抛弃它,因为即使你使用以下内容,仍然会有错误:
df = DataFrame({'A' : np.random.randn(5), 'B' : np.random.randn(5),'C' :np.random.randn(5), 'D':[str(x) for x in np.random.randn(5) ]})
这可能是一个错误,因为如果你查看名为'index.py'的核心文件,在第86行和第1228行,它所期望的类型是(分别):
_engine_type = _index.ObjectEngine
_engine_type = _index.Int64Engine
如果你仔细研究文档,那么这些似乎都没有期待一个字符串。这是我得到的最好的,祝你好运!如果您解决这个问题,请告诉我,因为我也很感兴趣。