Python для преобразования различных форматов даты в столбце

1

Я пытаюсь скрывать колонку с разными форматами дат.

Например:

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
datetime
date-formatting

1 ответ

1

Я предполагаю, что у вас есть кадр данных 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 внутренне представленную целыми числами.

  • 0
    Да, у меня есть датафрейм Pandas. К сожалению, ваше предложение не работает для меня. Я получаю ValueError: to assemble mappings requires at least that [year, month, day] be specified: [day,year] is missing
  • 0
    Немного странно. Я скопировал входные данные из вашего вопроса. Боюсь, больше ничего не поделаешь без точных входных данных.
Показать ещё 1 комментарий

Ещё вопросы

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