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

已生成年季度列,如何用Python过滤DataFrame过去4个季度数据?

解决方案

首先修正你代码里的小笔误:原代码中用了d['End Date'],应该改为df['End Date'],正确生成Quarter列的代码是:

df['Quarter'] = pd.PeriodIndex(df['End Date'], freq='Q')

接下来可以按以下步骤筛选过去4个季度的数据:

1. 确定参考季度

你可以选择基于当前系统日期自动获取参考季度,或者手动指定目标参考季度:

  • 自动获取当前季度:
ref_quarter = pd.Period.now(freq='Q')
  • 手动指定参考季度(比如你的例子中的2023Q1):
ref_quarter = pd.Period('2023Q1', freq='Q')

2. 计算筛选范围

根据参考季度,算出需要保留的季度区间:

  • 起始季度:参考季度往前推4个季度
  • 结束季度:参考季度往前推1个季度

3. 执行筛选

用布尔索引过滤DataFrame:

# 计算上下限
start_quarter = ref_quarter - 4
end_quarter = ref_quarter - 1

# 筛选数据
df_filtered = df[(df['Quarter'] >= start_quarter) & (df['Quarter'] <= end_quarter)]

补充说明

  • 因为Quarter列是Period类型,它支持直接的加减运算和大小比较,逻辑非常直观
  • 如果你的End Date列本身是datetime类型,也可以不提前生成Quarter列,直接基于日期筛选:
ref_quarter = pd.Period.now(freq='Q')
start_date = (ref_quarter - 4).start_time
end_date = (ref_quarter - 1).end_time

df_filtered = df[(df['End Date'] >= start_date) & (df['End Date'] <= end_date)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:31:07