看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)某公司规定 每年 9 月 1 日至 9 月 10 日为固定假期,其余日期若遇周末则正常休息(即仅把 9-1~9-10 当成额外长假,不做调休)。请完成以下任务:
AbstractHolidayCalendar
为上述规则建立假期日历。CustomBusinessDay
加载该日历,生成 2025-08-28 至 2025-09-12 之间的工作日序列。期望运行结果示例:
工作日(排除9月1-10日假期)为:
DatetimeIndex(['2025-08-28',
'2025-08-29',
'2025-09-11',
'2025-09-12'],
dtype='datetime64[ns]',
freq='C')
import pandas as pd
from pandas.tseries.holiday import AbstractHolidayCalendar, Holiday
from pandas.tseries.offsets import CustomBusinessDay
class MyHolidayCalendar(AbstractHolidayCalendar):
"""
自定义假期日历,将9月1日至9月10日设定为假期
"""
rules = [
Holiday('Custom Holiday', month=9, day=day) for day in range(1, 11)
]
# 使用示例:创建一个2023年9月的业务日范围,排除自定义假期
start_date = '2025-08-28'
end_date = '2025-09-12'
custom_business_day = CustomBusinessDay(calendar=MyHolidayCalendar())
# 生成2023年9月的工作日日期范围,排除假期
business_days_september = pd.date_range(start=start_date, end=end_date, freq=custom_business_day)
print("2025年9月的工作日(排除9月1-10日假期):")
print(business_days_september)
输出:
工作日(排除9月1-10日假期)为:
DatetimeIndex(['2025-08-28',
'2025-08-29',
'2025-09-11',
'2025-09-12'],
dtype='datetime64[ns]',
freq='C')
Holiday
列表一次性把 9-1~9-10 标为假期;CustomBusinessDay
自动跳过这些日期及周末;(完)
更新时间:2025-09-14 19:51:46 标签:pandas python 自定义 假期