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

如何为pandas DataFrame添加仅含工作日的连续Date列

Pandas生成全年工作日日期列的实现方法

错误原因

原有代码先生成了包含全年所有自然日的日期序列,再统一偏移1个工作日,会出现多个自然日对应同一个工作日的问题:周五、周六、周日3天分别加1个BDay都会跳转至下周一,最终出现大量重复日期。

正确实现

pandas的date_range本身支持直接生成工作日序列,仅需将freq参数设置为'B'(代表工作日频率)即可,无需额外偏移处理。

场景1:固定起止日期(首行2021-10-07,末行2022-10-08)

import pandas as pd

df = pd.DataFrame({
    'Date': pd.date_range(start='2021-10-07', end='2022-10-08', freq='B')
})

场景2:动态从当日开始生成一整年的工作日序列

如果不需要固定起止日期,要从运行代码的当日开始计算,覆盖一整年时间范围内的所有工作日:

import pandas as pd
import datetime as dt

end_date = dt.date.today() + dt.timedelta(days=365)
df = pd.DataFrame({
    'Date': pd.date_range(start=dt.date.today(), end=end_date, freq='B')
})

以上实现生成的Date列都仅包含工作日,无重复值。如果需要自定义跳过法定节假日,可以把freq替换为对应国家/地区的工作日日历偏移量即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:24:03