如何在Python Pandas DataFrame中计算Quarter Aging值
生成Pandas的Quarter Aging计算列
你已经通过以下代码从date列创建了Quarter列:
df['Quarter'] = pd.DatetimeIndex(df['date']).quarter
要生成Quarter Aging列,实现动态对比当前季度与过往季度的差值(当前季度为0,每往前一个季度值减1),可以按以下方式计算:
核心思路
将每个日期的季度转换为「年度+季度」的总序号(如2022-Q4对应2022*4+4=8092),再用该序号减去当前日期的总季度序号,得到的结果就是Quarter Aging值。
代码实现
方式一:分步计算(清晰直观)
# 从date列提取年份 df['Year'] = pd.DatetimeIndex(df['date']).year # 计算每条记录的总季度序号 df['Total_Quarter'] = df['Year'] * 4 + df['Quarter'] # 获取当前日期的总季度序号 current_time = pd.Timestamp.now() current_total = current_time.year * 4 + current_time.quarter # 生成Quarter Aging列 df['Quarter Aging'] = df['Total_Quarter'] - current_total
方式二:一行代码合并(简洁高效)
无需创建中间列,直接计算:
df['Quarter Aging'] = (pd.DatetimeIndex(df['date']).year * 4 + pd.DatetimeIndex(df['date']).quarter) - (pd.Timestamp.now().year * 4 + pd.Timestamp.now().quarter)
自定义基准季度
如果不需要用系统当前时间作为基准,而是固定某个季度(比如示例中的2022-Q4),可以手动设置基准值:
# 固定基准为2022-Q4 base_total = 2022 * 4 + 4 df['Quarter Aging'] = (pd.DatetimeIndex(df['date']).year *4 + pd.DatetimeIndex(df['date']).quarter) - base_total
验证示例
当基准为2022-Q4时,计算结果完全符合预期:
- 2022-Q4 → 0
- 2022-Q3 → -1
- 2021-Q4 → -4
- 2018-Q1 → (20184+1) - (20224+4) = 8073 - 8092 = -19
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

