Dataframe: изменение столбцов даты на другой формат
Есть датафрейм с сстолбцом датам. Нудно перевести их из формата 2020-08-24 , 2019-09-10 в формат 2020,8,24, 2019,9,10 - тоесть без '0' и '-' Заодним я еще отнимаю 1 месяц от них.
0 2020-08-24
1 2020-08-24
2 2020-08-24
... ...
12027 2019-09-10
12028 2019-09-10
12029 2019-09-09
Что пробую сделать: изменить тип столбца в 'to_datetime', отнять 30 дней и перевести обратно в str, чтобы заменить '-' на ','
df['Date_m'] = pd.to_datetime(df['Date_m']).dt.date
df['Date_new'] = df['Date_m'] - pd.offsets.Day(30)
# ? здесь нужно какое то преобразование в str
df['Date_new'] = df['Date_new'].str.replace('-',',')
Но даже здесь получаю ошибку AttributeError: Can only use .str accessor with string values!
К тому же как убрать из месяцев цифры '0' не знаю.
Как решить задачу? Может есть более красивое решение.
Ответы (1 шт):
Автор решения: Andrey
→ Ссылка
Вы можете перевести дату в строку нужного формата с помощью dt.strftime()
In [35]: df
Out[35]:
idx date
0 0 2020-07-25
1 1 2020-07-25
2 2 2020-07-05
3 12027 2019-08-11
4 12028 2019-08-11
5 12029 2019-08-10
In [36]: df.dtypes
Out[36]:
idx int64
date datetime64[ns]
dtype: object
In [37]: df.date.dt.strftime('%Y,%m,%d').str.replace(',0', ',')
Out[37]:
0 2020,7,25
1 2020,7,25
2 2020,7,5
3 2019,8,11
4 2019,8,11
5 2019,8,10
Name: date, dtype: object