Панды to_datetime месяц прочитан неправильно

1

У меня есть кадр данных, содержащий даты формы YYYYMM (например, 201704).

Попытка превратить его в тип даты и времени:

data['ym'] = pd.to_datetime(data['ym'],format="%y%m")
data['year'], data['month'] = data['ym'].dt.year, data['ym'].dt.month

Дает мне правильные годы, но не правильные месяцы:

 data['month'].unique()

возвращает только одно значение (и в данных 12).

 data['ym']

возвращается

 2017-01-01 00:08:00

Любая идея о том, как правильно выбрать месяц?

  • 0
    Ваша строка год-месяц "%Y%m"
  • 0
    Спасибо, @Ракеш! Я только пробовал "% Y% M".
Теги:
pandas
python-datetime

2 ответа

2
Лучший ответ

Используйте %Y для разбора YYYY, %y для формата YY years:

data = pd.DataFrame({'ym':['201704','201705','201706']})

data['ym'] = pd.to_datetime(data['ym'], format="%Y%m")
data['year'], data['month'] = data['ym'].dt.year, data['ym'].dt.month
print (data)
          ym  year  month
0 2017-04-01  2017      4
1 2017-05-01  2017      5
2 2017-06-01  2017      6
  • 0
    @ukemi - спасибо.
1

Вы также можете сделать это с помощью модуля datetime python:

from datetime import datetime
data['ym'] = data['ym'].apply(lambda x: datetime.strptime(str(x), format='%Y%m'))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню