我有一个 pandas 数据框,其中一列包含季度和年份的字符串,格式如下:Q12019
我的问题:如何将其转换为日期时间格式?
最佳答案
您可以使用 Pandas 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)
<小时/>
注意:Pandas PeriodIndex
功能经历了行为回归(记录为 here ),因此对于高于 0.23.4 的 Pandas 版本,您需要使用reformatted_quarters.values
相反:
datetimes = pd.PeriodIndex(reformatted_quarters.values, freq='Q').to_timestamp()
关于python - 将 "Q12019"对象转换为 datetime64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58760124/