Извлечение месяца из метки времени путем указания формата даты метки времени в Python - PullRequest
0 голосов
/ 18 июня 2020

У меня есть набор данных с отметкой времени в формате дд / мм / гггг чч: мм: сс. Я хочу извлечь месяц и год для всего столбца. Итак, я использовал следующий код:

Извлечение года
`df['Year'] = pd.DatetimeIndex(df['timestamp']).year`
Извлечение месяца
`df['month_num'] = pd.DatetimeIndex(df['timestamp']).month`
Преобразование числа месяца в название месяца
`df['Month'] = df['month_num'].apply(lambda x: calendar.month_abbr[x])`
`df.drop(['month_num'], axis=1, inplace=True)`

Однако приведенное выше возвращает неправильный месяц, поскольку иногда это занимает месяц из второй пары деталей (как если бы формат даты был в дд / мм / гггг, что на самом деле так и есть), а иногда берется месяц из первой пары деталей (как если бы формат даты был в мм / дд / гггг , который не). Итак, как вы можете видеть ниже, он возвращает «февраль» вместо того, что должно быть «янв», хотя «De c» является правильным.

`02/01/2020 12:07:00    EURUSD  EUR 138,476.70  2020    Feb`
`02/01/2020 12:02:12    GBPHKD  GBP 13,545.93   2020    Feb`
`31/12/2019 16:35:48    GBPUSD  USD 537.60      2019    Dec`
`31/12/2019 16:29:34    GBPHKD  HKD 279.17      2019    Dec`

Я также попытался изменить исходный формат метки времени на гггг-мм-дд, но при изменении формата он продолжает брать месяц в другом порядке.

Есть идеи по этому поводу? Ура!

1 Ответ

0 голосов
/ 18 июня 2020

используйте strftime('%b') и assign

убедитесь, что ваш столбец даты является правильной датой pd.to_datetime(df['date'])

df.assign(year = df[0].dt.year,
          month = df[0].dt.strftime('%b'))
print(df)
           0         1       2    3           4  year month
0 2020-02-01  12:07:00  EURUSD  EUR  138,476.70  2020   Feb
1 2020-02-01  12:02:12  GBPHKD  GBP   13,545.93  2020   Feb
2 2019-12-31  16:35:48  GBPUSD  USD      537.60  2019   Dec
3 2019-12-31  16:29:34  GBPHKD  HKD      279.17  2019   Dec
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...