2013-05-01 7 views
4

У меня есть DataFrames между 100k и 2m в размере. один я имею дело с на этот вопрос заключается в следующем большом, но заметьте, что я должен буду делать то же самое для других кадров:Ошибка переиндексации не имеет смысла

>>> len(data) 
357451 

теперь этот файл был создан путем компиляции много файлов, поэтому индекс для него действительно странно. Так что все, что я хотел сделать, было проиндексировать его 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 

Это на самом деле не имеет никакого смысла. Поскольку я переиндексирован массивом, содержащим числа от 0 до 357450, все объекты индекса уникальны! Почему он возвращает эту ошибку?

Дополнительно: Я использую python2.7 и панды 11,0

ответ

7

Когда он жалуется, что Reindexing only valid with uniquely valued Index, это не возражая, что ваш новый индекс не является уникальным, он возражает, что ваш старый один ISN» т.

Например:

>>> 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 

но

>>> df.index = range(len(df)) 
>>> df 
    0 
0 0 
1 1 
2 2 
3 3 
4 4 

Хотя я думаю, что я бы написать

df.reset_index(drop=True) 

вместо этого.

Смежные вопросы