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

Python获取每季度(3/6/9/12月)第三个周五前的周四日期方法

实现方案

方案说明

你要的季度月(3、6、9、12月)第三个周五的前一个周四,等价于对应月份第三个周五的日期往前推1天,基于pandas的日期偏移功能可快速实现。

修正后的完整代码

你现有代码的参数配置有误,修正后直接偏移1天即可得到结果:

import pandas as pd

# 步骤1:生成指定范围内所有月份的第三个周五
# WeekOfMonth参数说明:week=2代表第三周(周数从0开始计数),weekday=4代表周五(周几从0=周一开始计数)
third_fridays = pd.date_range(
    start="1981-03-01", 
    end="2029-09-30", 
    freq=pd.offsets.WeekOfMonth(week=2, weekday=4)
)
# 步骤2:过滤仅保留3、6、9、12月的记录,再往前推1天得到目标周四
target_thursdays = third_fridays[third_fridays.month.isin([3,6,9,12])] - pd.Timedelta(days=1)

# 验证前10条结果
print(target_thursdays[:10])

正确性验证

可以打印周五和周四的配对结果,确认逻辑符合预期:

valid_fridays = third_fridays[third_fridays.month.isin([3,6,9,12])]
for fri, thu in zip(valid_fridays[:5], target_thursdays[:5]):
    print(f"对应第三个周五:{fri.strftime('%Y-%m-%d')},前一个周四:{thu.strftime('%Y-%m-%d')}")

更简洁的一步实现方案

也可以直接组合偏移规则,省去手动过滤月份的步骤:

target_thursdays = pd.date_range(
    start="1981-03-01",
    end="2029-09-30",
    # 组合季度偏移+月内周偏移直接定位目标日期
    freq=pd.offsets.QuarterEnd(startingMonth=12) + pd.offsets.WeekOfMonth(week=2, weekday=4) - pd.Timedelta(days=1)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:09:01