Преобразовать объект "Q12019" в datetime64 - PullRequest
3 голосов
/ 08 ноября 2019

У меня есть фрейм данных pandas, где один столбец содержит строку для квартала и года в следующем формате: Q12019

Мой вопрос: Как мне преобразовать это в формат datetime?

Ответы [ 2 ]

3 голосов
/ 08 ноября 2019

Вы можете использовать Панд PeriodIndex для достижения этой цели. Просто переформатируйте столбец кварталов в ожидаемый формат %Y-%q (с некоторой помощью из regex , переместите год вперед):

reformatted_quarters = df['QuarterYear'].str.replace(r'(Q\d)(\d+)', r'\2\1')
print(reformatted_quarters)

Это напечатает:

0    2019Q1
1    2018Q2
2    2019Q4
Name: QuarterYear, dtype: object

Затем передайте этот результат в PeriodIndex, чтобы получить формат datetime. Используйте 'Q' для указания квартальной частоты:

datetimes = pd.PeriodIndex(reformatted_quarters, freq='Q').to_timestamp()
print(datetimes)

Это печатает:

DatetimeIndex(['2019-01-01', '2018-04-01', '2019-10-01'], dtype='datetime64[ns]', name='Quarter', freq=None)

Примечание : функциональность панд PeriodIndex подверглась регрессиив поведении (задокументировано здесь ), поэтому для версий Pandas больше, чем 0.23.4, вам нужно будет использовать reformatted_quarters.values вместо:

datetimes = pd.PeriodIndex(reformatted_quarters.values, freq='Q').to_timestamp()
0 голосов
/ 08 ноября 2019
(quarter) => new Date(quarter.slice(-4), 3 * (quarter.slice(1, 2) - 1), 1)

Это даст вам начало каждого квартала (например, q42019 даст 2019-10-01).

Возможно, вам следует включить некоторую проверку, так как она будет продолжаться в течение нескольких месяцев (например, q52019= q12020 = 2020-01-01)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...