将“ Q12019”对象转换为datetime64

时间:2019-11-08 03:53:08

标签: python python-3.x datetime

我有一个pandas数据框,其中一列包含以下格式的季度和年份的字符串:Q12019

我的问题:我如何将其转换为日期时间格式?

2 个答案:

答案 0 :(得分:3)

您可以使用熊猫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,您需要使用{改为{1}}:

reformatted_quarters.values

答案 1 :(得分:0)

(quarter) => new Date(quarter.slice(-4), 3 * (quarter.slice(1, 2) - 1), 1)

这将为您提供每个季度的开始(例如q42019将为2019-10-01)。

您可能应该包括一些验证,因为它将持续滚动数月(例如,q52019 = q12020 = 2020-01-01)