Вы можете использовать Панд 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()