重新索引错误毫无意义

Rya*_*axe 5 python indexing pandas

我的DataFrames尺寸在100k到2m之间.我正在处理这个问题的那个很大,但请注意我必须对其他帧做同样的事情:

>>> len(data)
357451
Run Code Online (Sandbox Code Playgroud)

现在这个文件是通过编译许多文件创建的,所以它的索引真的很奇怪.所以我想做的就是重新索引它range(len(data)),但是我得到了这个错误:

>>> data.reindex(index=range(len(data)))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/frame.py", line 2542, in reindex
    fill_value, limit)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/frame.py", line 2618, in _reindex_index
    limit=limit)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/index.py", line 893, in reindex
    limit=limit)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/core/index.py", line 812, in get_indexer
    raise Exception('Reindexing only valid with uniquely valued Index '
Exception: Reindexing only valid with uniquely valued Index objects
Run Code Online (Sandbox Code Playgroud)

这实际上没有任何意义.由于我使用包含数字0到357450的数组重新索引,因此所有Index对象都是唯一的!为什么会返回此错误?

额外信息:我使用的是python2.7和pandas 11.0

DSM*_*DSM 8

当它抱怨时,Reindexing only valid with uniquely valued Index并不反对你的索引不是唯一的,它反对你的旧索引不是.

例如:

>>> df = pd.DataFrame(range(5), index = [1,2,3,1,2])
>>> df
   0
1  0
2  1
3  2
1  3
2  4
>>> df.reindex(index=range(len(df)))
Traceback (most recent call last):
[...]
  File "/usr/local/lib/python2.7/dist-packages/pandas-0.12.0.dev_0bd5e77-py2.7-linux-i686.egg/pandas/core/index.py", line 849, in get_indexer
    raise Exception('Reindexing only valid with uniquely valued Index '
Exception: Reindexing only valid with uniquely valued Index objects
Run Code Online (Sandbox Code Playgroud)

>>> df.index = range(len(df))
>>> df
   0
0  0
1  1
2  2
3  3
4  4
Run Code Online (Sandbox Code Playgroud)

虽然我想我会写

df.reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)

代替.