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

Python/Pandas如何计算支持自定义假期的季度末工作日

带自定义假期过滤的季度末工作日计算实现

核心思路

利用pandas自带的日期偏移能力,先定位默认季度末工作日,再基于自定义假期规则调整,避免手动处理季度边界、周末判断等复杂逻辑。

依赖导入

import pandas as pd
from pandas.tseries.offsets import BQuarterEnd, CustomBusinessDay

函数实现

def get_quarter_end_workday(input_date, custom_holidays=None):
    # 输入日期格式统一转换
    input_dt = pd.to_datetime(input_date)
    # 定位当前日期对应的季度末默认工作日(自动排除周六日,避免输入日期为季度末时跳到下一季度)
    raw_quarter_end = BQuarterEnd().rollforward(input_dt)
    
    # 无自定义假期直接返回结果
    if not custom_holidays:
        return raw_quarter_end.date()
    
    # 自定义假期格式统一转换
    formatted_holidays = [pd.to_datetime(holiday) for holiday in custom_holidays]
    # 定义自定义工作日规则:排除周六日+自定义假期
    custom_workday = CustomBusinessDay(holidays=formatted_holidays)
    # 若原始季度末为假期,自动回滚到最近的符合规则的工作日
    adjusted_quarter_end = custom_workday.rollback(raw_quarter_end)
    
    return adjusted_quarter_end.date()

测试验证(对应示例场景)

# 传入示例参数
input_date = "2020-11-20"
custom_holidays = ["2020-12-31"]
# 调用函数
result = get_quarter_end_workday(input_date, custom_holidays)
print(result)
# 输出结果:2020-12-30

注意事项

  • 输入的日期、自定义假期支持字符串、datetime对象等多种格式,函数内部会自动转换
  • rollback方法会自动处理周末和假期的回滚逻辑,无需手动写循环逐天判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:30:02