pd.to_datetime заказывает неверный месяц - PullRequest
0 голосов
/ 21 ноября 2018

Я использую панды для чтения файла .csv.Я хочу проанализировать данные этого файла по месяцам.Первоначально первые 5 строк выглядят так:

  date      value
01.04.2017  208.04
01.04.2017  81
01.04.2017  280
01.04.2017  403.08
01.04.2017  71.1

Поэтому я использую:

df1['date']=pd.to_datetime(df1['date'], format='%d.%m.%Y')
df1['month']=df1['date'].dt.strftime('%B')

Однако, когда я смотрю на свой новый столбец месяца, я получаю следующее:

print(df1['month'].unique())
>>['April' 'May' 'June' 'July' 'August' 'September' 'January' 'October'
 'November' 'December' 'February' 'March']

Январь наступает после сентября, хотя в оригинальном .csv даты правильно упорядочены.У кого-нибудь есть идея решить эту проблему или откуда возникла проблема?Заранее спасибо!

PS Импортирую файл с:

df1=pd.read_csv("GF2017_2018.csv", delimiter=';',dtype=str, index_col=False, encoding='latin-1')

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

По моему мнению, вы можете сортировать дату и время, потому что ваши даты имеют неправильный порядок.

df1['date']=pd.to_datetime(df1['date'], format='%d.%m.%Y')
df1 = df1.sort_values('date')

df1['month']=df1['date'].dt.strftime('%B')

Еще одно решение, если вам нужно правильное упорядочение, - конвертировать мотыльки в упорядоченные категории :

months = ['January','February','March','April','May','June','July','August',
          'September','October','November','December']

df1['month'] = pd.Categorical(df1['date'].dt.strftime('%B'), ordered=True, categories=months)
df1 = df1.sort_values('date')
0 голосов
/ 21 ноября 2018

Как указано в документации pandas.Series.unique , уникальные значения возвращаются в порядке их появления, и не похоже, что любое из ваших действий изменило бы порядок данных,Я бы дважды проверил фактический порядок месяцев в данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...