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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:25:15