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

如何用Pandas简洁地将年季度(yyyyQQ)转换为目标日期

解决Pandas将年份季度转换为季度末日期的问题

你可以通过以下两种方法将季度起始日期转换为季度结束日期:

方法一:使用pd.Period类型

将拼接后的年份季度字符串转换为季度周期类型,直接提取周期的结束日期:

import pandas as pd

df = pd.DataFrame({'year':['1980','1980','1980','1980'],'qtr':['Q1','Q2','Q3','Q4']})
# 拼接年份和季度,转换为Period类型,再提取结束日期
df['date'] = df.apply(lambda x: pd.Period(f"{x['year']}{x['qtr']}", freq='Q').end_time, axis=1)
print(df[['date','year','qtr']])

输出结果:

date  year qtr
0 1980-03-31  1980  Q1
1 1980-06-30  1980  Q2
2 1980-09-30  1980  Q3
3 1980-12-31  1980  Q4

方法二:使用QuarterEnd日期偏移量

基于你已得到的季度起始日期,通过pd.offsets.QuarterEnd调整到季度末:

import pandas as pd

df = pd.DataFrame({'year':['1980','1980','1980','1980'],'qtr':['Q1','Q2','Q3','Q4']})
# 先得到季度起始日期
df['start_date'] = pd.to_datetime(df['year'] + df['qtr'], infer_datetime_format=True)
# 调整为季度末日期
df['date'] = df['start_date'] + pd.offsets.QuarterEnd()
print(df[['date','year','qtr']])

输出结果和方法一一致。

说明

  • pd.Period(freq='Q')会识别季度周期,end_time属性直接返回该季度的最后一天(若只需日期可追加.date()转换为纯日期格式)
  • pd.offsets.QuarterEnd()会自动计算当前日期所在季度的最后一天,无需额外调整参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:20:41