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

pandas使用bdate_range指定holidays参数后未排除目标日期如何解决?

问题原因

你传参的位置错误,holidays参数不是pd.bdate_range的直接入参,需要传入给自定义工作日频率对象pd.offsets.CustomBusinessDay才会生效。你之前直接将holidays传递给bdate_range,参数不会被频率识别,因此排除规则不生效。

正确实现代码

import pandas as pd
from datetime import date

# 定义待排除的日期
exclude = [date(2020, 1, 7), date(2020, 1, 27)]
# 构造带排除假期的自定义工作日频率
custom_bd = pd.offsets.CustomBusinessDay(holidays=exclude)
# 生成日期范围
result = pd.bdate_range(start='2020/1/1', end='2020/1/31', freq=custom_bd)

结果验证

输出的result会自动排除1月7日和1月27日,符合预期:

DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-06',
               '2020-01-08', '2020-01-09', '2020-01-10', '2020-01-13',
               '2020-01-14', '2020-01-15', '2020-01-16', '2020-01-17',
               '2020-01-20', '2020-01-21', '2020-01-22', '2020-01-23',
               '2020-01-24', '2020-01-28', '2020-01-29', '2020-01-30',
               '2020-01-31'],
              dtype='datetime64[ns]', freq='C')

补充说明

  • 高版本pandas已弃用pd.datetime()接口,推荐直接使用datetime.date或者pd.Timestamp定义日期,兼容性更好。
  • 如果需要同时修改工作日规则(比如调整一周的工作日范围),也可以在CustomBusinessDay构造时传入weekmask参数自定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:39:05