python - 解决 Reindexing only valid with uniquely valued Index objects

标签 python pandas

我已经查看了很多出现此错误的问题。我正在运行 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 version# 没问题,所以这应该不是问题 pandas Reindexing only valid with uniquely valued Index objects

最佳答案

首先,我相信您打算使用以下命令测试重复项:

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

如果您更深入地查看文档,那么它们似乎都不需要字符串。这是我得到的最好的,祝你好运!如果您解决了这个问题,请告诉我,因为我也很感兴趣。

关于python - 解决 Reindexing only valid with uniquely valued Index objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21533706/

相关文章:

python - Windows 8.1 上的 Pyusb - 没有可用的后端 - 如何安装 libusb?

python - 如何使用 Python 读取 Fortran 创建的整个二进制文件

python - 如何将文件路径中的图像格式化为与 python 中的 mnist.load_data() 相同的方式?

python - 当所有进程都尝试从队列中获取数据并且队列为空时结束处理吗?

python - 在函数定义中放置变量 - Python

python - 如何从python中的数据透视表计算最大值

python - Pandas :按每组中的复杂条件选择子数据集

python - 让函数在数据帧的每一行上工作(pandas)

python - 通过id创建时差变量的最佳方法

python - 如果名字存在, Pandas 会打印标记