2013-07-13 3 views
11

Я всегда удивлен этим:При использовании Pandas DataFrame.sort() я могу заставить его перенумеровать строки?

> data = DataFrame({'x':[1, 2], 'y':[2, 1]}) 
> data = data.sort('y') 
> data 
    x y 
1 2 1 
0 1 2 

> data['x'][0] 
1 

Есть ли способ, я могу привести индексы быть переназначены, чтобы соответствовать новому порядку?

+0

Это не имело бы смысл, если индексы являются временными метками, например. Вы можете переназначить свойство индекса, если вам нужно. –

ответ

22

Со своей стороны, я рад, что сортировка не выбрасывает информацию индекса. Если бы это было так, то не было бы особого смысла иметь индекс, в первую очередь, в отличие от другого столбца.

Если вы хотите сбросить индекс в диапазоне, вы можете:

>>> data 
    x y 
1 2 1 
0 1 2 
>>> data.reset_index(drop=True) 
    x y 
0 2 1 
1 1 2 

Где можно переназначить или использовать inplace=True, как вам понравилось. Если вместо реальной проблемы является то, что вы хотите получить доступ по позиции независимо от индекса, можно использовать iloc:

>>> data['x'] 
1 2 
0 1 
Name: x, dtype: int64 
>>> data['x'][0] 
1 
>>> data['x'].iloc[0] 
2 
+0

Perfect; Спасибо! – Owen

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