Python中如何将'2002-Q1'字符串转为pandas季度日期对象
pandas年-季度字符串转季度日期对象实现方法
完全可以,pandas原生提供了季度粒度的周期日期类型,不需要额外编写解析逻辑,直接调用内置方法即可完成转换。
单值转换方法
针对单个'2002-Q1'格式的字符串,直接使用pd.Period指定季度频率即可转换:
import pandas as pd YearQtr = '2002-Q1' # 转换为pandas季度周期对象 quarter_obj = pd.Period(YearQtr, freq='Q')
转换得到的quarter_obj是pandas专门为季度粒度设计的日期对象,原生支持各类季度相关的时间操作,常用操作如下:
- 直接输出对象值为
2002Q1,和原字符串语义完全匹配 - 调用
quarter_obj.start_time可获取该季度第一天的时间戳:2002-01-01 00:00:00 - 调用
quarter_obj.end_time可获取该季度最后一天的时间戳:2002-03-31 23:59:59.999999999 - 支持直接做季度偏移计算,比如
quarter_obj + 3会自动处理跨年逻辑,得到2002Q4
批量转换方法
如果需要处理一整列同格式的年-季度字符串,使用pd.PeriodIndex即可批量转换为季度周期序列:
# 示例:转换Series中的季度字符串 qtr_str_col = pd.Series(['2002-Q1', '2002-Q2', '2003-Q4']) qtr_period_col = pd.PeriodIndex(qtr_str_col, freq='Q')
注意:如果直接用
pd.to_datetime(YearQtr)转换,得到的是对应季度第一天的普通时间戳,不是带季度维度的周期对象,做季度粒度的分组、时序计算时优先使用Period类型,避免时间精度误差。
内容的提问来源于stack exchange,提问作者Brian Smith
相关产品推荐
相关产品推荐

