2017-01-02 2 views
4

Я создал dataframe, импортировав файл csv. И преобразовал столбец даты в datetime и сделал его индексом. Однако, при сортировке индекса он не дает результата я хотелpandas dataframe сортировать по дате

print(df.head()) 
df['Date'] = pd.to_datetime(df['Date']) 
df.index = df['Date'] 
del df['Date'] 
df.sort_index() 
print(df.head()) 

Вот результат:

  Date  Last 
0 2016-12-30 1.05550 
1 2016-12-29 1.05275 
2 2016-12-28 1.04610 
3 2016-12-27 1.05015 
4 2016-12-23 1.05005 
       Last 
Date    
2016-12-30 1.05550 
2016-12-29 1.05275 
2016-12-28 1.04610 
2016-12-27 1.05015 
2016-12-23 1.05005 

дата на самом деле восходит к 1999 году, так что, если я разобраться в этом на сегодняшний день, должны показывать данные в порядке возрастания?

+6

Сделайте либо 'df.sort_index (inplace = True)', либо 'df = df.sort_index()' – MaxU

+0

Возможно, лучше использовать 'df.set_index ('Date ', drop = True) 'для изменения индекса. – quapka

ответ

1

Простое расширение правильного ответа MaxU: вы использовали правильный метод, но, как и многие другие методы pandas, вам нужно будет «воссоздать» dataframe, чтобы изменения вступили в силу. Как MaxU уже отмечалось, это достигается путем ввода переменной снова (в «магазин» выход используемого метода в одной и той же переменной), например:

df = df.sort_index()

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

df.sort_index(inplace=True)

Однако, в моем опыте, я часто чувствую «безопаснее», используя первый вариант. Он также выглядит более четким и более нормализованным, поскольку не все методы предлагают использование inplace. Но я все свожу к сценарию sytle, я думаю ...

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