datetime
значения не хранятся в виде строк!
Они хранятся внутри как целые числа, и должен быть полным: например, значение datetime
должно включать день, месяци год.Поэтому вы должны выбрать один из следующих вариантов:
- Сохранить серию с
datetime
dtype и увидеть представление по умолчанию , то есть 2018-01-01
, когда выотобразите или распечатайте серию. - Сохраните серию с
object
dtype и выберите желаемое представление.
Есть no «промежуточные» опциичтобы получить лучшее из обоих миров.
Вариант 1: datetime
Просто используйте pd.to_datetime
, как вы используете его сейчас.Вот демонстрация:
df = pd.DataFrame({'date_col': ['Jan-2018', 'Oct-2018', 'Dec-2018']})
df['date_col'] = pd.to_datetime(df['date_col'], format='%b-%Y')
print(df, df['date_col'].dtype)
date_col
0 2018-01-01
1 2018-10-01
2 2018-12-01 datetime64[ns]
Вариант 2: object
Ну, это именно то, что вы используете в качестве ввода.Ничего не делать.Ваш ввод формат '%b-%Y'
уже имеет вид 'Jan-2018'
.
Примечание по SettingWithCopyWarning
Это предупреждение не имеет ничего общего с pd.to_datetime
.По всей вероятности, ваш dataframe
является неоднозначным фрагментом другого фрейма данных, и поэтому Pandas выдает предупреждение о том, что вы можете увидеть неожиданные результаты, если вы явно не скопируете фрейм данных.См. Также Как бороться с SettingWithCopyWarning в Pandas?