pd.DatetimeIndex продолжает возвращать неправильный месяц - PullRequest
0 голосов
/ 04 июля 2019

Я читаю данные из файла CSV, и у меня есть столбец Дата, отформатированный как "дд / мм / гггг" .

Я просто хочу извлечь из него месяц.

Проблема в том, что в некоторых случаях (по моим наблюдениям, это когда dd> 12), он возвращает месяц правильно. В противном случае он возвращает день.

Я попытался извлечь день, предполагая, что возможно встроенный формат равен "мм / дд / гггг" , но возникает та же проблема. Только год извлекается правильно.

Я попытался переформатировать дату, заменив "/" на "-" , но это не помогло решить проблему.

Это код для извлечения месяца:

pd.DatetimeIndex(df['Date']).month

Вот пример результатов, которые я получаю.

Date: 19-01-2012,
Month: 01

Date: 04-01-2012,
Month: 04

Ответы [ 2 ]

3 голосов
/ 04 июля 2019

Одна вещь, которую вы можете сделать, это преобразовать столбец df['Date'] в качестве даты и времени.

Вы можете указать, что дни будут первыми с параметром dayfirst.

df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)

источник: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html

Когда я использую это с вашим примером и извлекаю месяцы с помощью:

pd.DatetimeIndex(df['Date']).month

Я вижу оба месяца как 1 для января.

1 голос
/ 04 июля 2019

попробуйте добавить format="%d-%m-%Y:

df = pd.DataFrame(data={'date':["19-01-2012","04-01-2012"]})

df['month'] = pd.to_datetime(df['date'],format="%d-%m-%Y").dt.month

print(df)
       date     month
0  19-01-2012      1
1  04-01-2012      1

Я надеюсь, что это решит вашу проблему

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