You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python pandas将季度标识转换为对应季度首月首日长日期

季度短标识转对应季度首日的实现方案

报错本质是pandas的PeriodIndex默认不识别Q+季度+两位年的自定义格式,先做字符串格式标准化再转换即可,不需要写硬编码映射。

转换规则对齐

转换逻辑严格匹配需求:

  • Q1 → 当年1月1日
  • Q2 → 当年4月1日
  • Q3 → 当年7月1日
  • Q4 → 当年10月1日
    示例值对应结果完全符合预期:Q123→1/1/2023、Q425→10/1/2025、Q226→4/1/2026、Q326→7/1/2026。

完整可运行代码

import pandas as pd

# 正则把原始QxYY格式转成pandas可识别的YYYYQx标准格式
# 例:Q123 → 提取季度位1、两位年23 → 拼接为标准格式2023Q1
std_quarter = df['Date'].str.replace(r'Q(\d)(\d{2})', r'20\2Q\1', regex=True)

# 转季度周期后直接转时间戳,默认返回季度首日
df['LongDate'] = pd.PeriodIndex(std_quarter, freq='Q').to_timestamp()

# 如需输出为M/D/YYYY格式的字符串(非datetime类型),追加以下行即可
# Windows系统把%-m、%-d替换为%#m、%#d
df['LongDate'] = df['LongDate'].dt.strftime('%-m/%-d/%Y')

注意事项

  • 代码默认两位年份属于2000-2099区间,如果存在1900-1999年的历史数据,调整正则里的年份前缀补全规则即可
  • 不需要额外做日期偏移计算,pd.PeriodIndex.to_timestamp()对于季度频率默认返回的就是对应季度的第一个自然日
  • 如果需要保留datetime类型用于后续时间计算,跳过最后一步strftime格式化即可

内容的提问来源于stack exchange,提问作者Lynn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 16:54:36