Pandas如何将季度日期的4位年份格式转换为2位格式
问题结论
你当前的实现方案完全可行。Pandas 1.1.3版本已原生支持PeriodIndex解析Q[季度].[4位年份]格式的季度字符串,strftime参数中%q对应季度序号、%y对应2位年份,输出结果和你预期的格式完全匹配。
其他可选处理方案
如果你不想做日期类型转换,或者数据量较大追求更高处理性能,可以直接用字符串操作实现:
- 正则替换法:格式固定的场景下性能最优,不需要做日期类型校验和转换
df['date'] = df['date'].str.replace(r'\.(\d{4})$', lambda m: f'.{m.group(1)[-2:]}', regex=True)
- 日期转换后再格式化:逻辑和你现有方案类似,适合后续还要对日期做其他运算的场景
df['date'] = pd.to_datetime(df['date']).dt.to_period('Q').dt.strftime('Q%q.%y')
方案选择建议
- 如果你的数据中存在不符合季度格式的异常值,且希望保留原异常值不报错:优先选字符串正则替换法
- 如果后续还要对date列做季度偏移、时间差计算等操作:优先选你现有的PeriodIndex方案,保留周期类型的可运算性
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

