извлекать четверть из столбца даты и времени в присутствии NaN в пандах - PullRequest
1 голос
/ 02 ноября 2019

Мне нужно извлечь четверть из столбца времени данных панд как Q1 Q2 Q3 Q4. Пример кода ниже:

dfm = pd.DataFrame({'Date': [None, '2018/02/03', '2019/09/30', '2017/05/12']})
dfm.Date = pd.to_datetime(dfm.Date, format='%Y/%m/%d')
dfm['Quarter'] = dfm.Date.dt.quarter
dfm['Quarter'] = dfm.Quarter.apply(lambda x: 'Q'+ str(x))

То, что я получил, это Q1.0 Q2.0 Q3.0 Q4.0. Проблема пришла от dfm['Quarter'] = dfm.Date.dt.quarter. При наличии NaT я получаю float, а не integer.

Кто-нибудь знает, как я могу это исправить? Заранее большое спасибо.

1 Ответ

2 голосов
/ 02 ноября 2019

Используйте dt.to_period с strftime, чтобы получить правильный формат:

dfm['Quarter'] = dfm['Date'].dt.to_period('Q').dt.strftime('Q%q')

        Date Quarter
0        NaT     NaT
1 2018-02-03      Q1
2 2019-09-30      Q3
3 2017-05-12      Q2

Или с str.extract, но NaT get преобразуется в NaN:

dfm['Quarter'] = dfm['Date'].dt.to_period('Q').astype(str).str.extract('(Q\d)')

        Date Quarter
0        NaT     NaN
1 2018-02-03      Q1
2 2019-09-30      Q3
3 2017-05-12      Q2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...