Я пытаюсь скрывать колонку с разными форматами дат.
Например:
month
2018-01-01 float64
2018-02-01 float64
2018-03-01 float64
2018-03-01 00:00:00 float64
2018-04-01 01:00:00 float64
2018-05-01 01:00:00 float64
2018-06-01 01:00:00 float64
2018-07-01 01:00:00 float64
Я хочу преобразовать все в столбце только месяц и год. Например, мне хотелось бы 18 января, 18 февраля, 18 марта и т.д.
Я попытался использовать этот код, чтобы сначала скрыть мой столбец до datetime:
df['month'] = pd.to_datetime(df['month'], format='%Y-%m-%d')
Но он возвращает float64:
Из
month
2018-01-01 00:00:00 float64
2018-02-01 00:00:00 float64
2018-03-01 00:00:00 float64
2018-04-01 01:00:00 float64
2018-05-01 01:00:00 float64
2018-06-01 01:00:00 float64
2018-07-01 01:00:00 float64
В моем выпуске CSV формат месяца был изменен на 01/05/2016 00:00:00. Можете ли вы, пожалуйста, помочь мне скрыть всего лишь месяц и год, например, 18 августа.
Спасибо
Я предполагаю, что у вас есть кадр данных Pandas. В этом случае вы можете использовать pd.Series.dt.to_period
:
s = pd.Series(['2018-01-01', '2018-02-01', '2018-03-01',
'2018-03-01 00:00:00', '2018-04-01 01:00:00'])
res = pd.to_datetime(s).dt.to_period('M')
print(res)
0 2018-01
1 2018-02
2 2018-03
3 2018-03
4 2018-04
dtype: object
Как вы можете видеть, это приводит к серии DTYPE object
, который, как правило, неэффективно. Лучшая идея - установить день до конца месяца и поддерживать серию datetime
внутренне представленную целыми числами.
ValueError: to assemble mappings requires at least that [year, month, day] be specified: [day,year] is missing