Формат даты в датафрейме

Имеется датафрейм с датой в формате "2018-12-31", подскажите, пожалуйста, как преобразовать дату в формат "2018-12", при этом сохранив тип "datetime"?


Ответы (1 шт):

Автор решения: passant

На сколько я понимаю, вы желаете невозможного. В пакете datetime объект типа date (и соответственно - datetime) ВСЕГДА представляется как составной объект из трех компонент year, month, day. Что легко проверить:

dt=datetime.datetime.strptime('2018-12','%Y-%m')
print(dt)

Результат:

2018-12-01 00:00:00

Что, в общем-то логично: даты без дня не бывает.

Поэтому - либо в строку, и тогда можете отрезать от нее какую хотите часть и делать я ней что хотите:

dt=datetime.datetime.strptime('2018-12-31','%Y-%m-%d').strftime('%Y-%m')
print(dt) 

Результат:

2018-12

Или все-таки date (или datetime) но тогда принимаете предложенные "правила игры".

→ Ссылка