[英]Adding a range of dates as one holiday rule, instead of just a single date, in Pandas.tseries AbstractHolidayCalendar?
我正在编写一个 Python 脚本,根据自定义假日日历将给定的开始日期偏移 X 个工作日。 Pandas.tseries 似乎是个不错的选择。
在构建我的通用假期日历时,我遇到了将单个日期添加到假期规则的示例。
例子:
import pandas as pd
from pandas.tseries.holiday import AbstractHolidayCalendar, Holiday, Easter
from pandas.tseries.offsets import Day
class myCalendar(AbstractHolidayCalendar):
rules = [
Holiday('Off-day during Easter', month=1, day=1, offset=[Easter(), Day(-2)]),
Holiday('Christmas Day', month=12, day=25)
]
像这样使用 function 时:
def offset_date(start, offset):
return start + pd.offsets.CustomBusinessDay(n=offset, calendar=myCalendar())
规则中的日期将按预期跳过。
但是我现在想在给定的起始偏移量的情况下向规则集添加 3 整周,21 天,而不是编写 21 条规则行来实现相同的目的?
我想知道你们是否知道是否有可能创建一个将 21 天添加到规则集的单行程序?
这是一种使用列表推导来实现它的方法,它使它保持简短和可读:
class myCalendar(AbstractHolidayCalendar):
rules = [
Holiday("Off-day during Easter", month=1, day=1, offset=[Easter(), Day(-2)]),
Holiday("Christmas Day", month=12, day=25),
Holiday("Christmas Day", month=12, day=25),
] + [Holiday("Ski days", month=2, day=x) for x in range(1, 22)]
在这里,从 2 月 1 日开始的 21 天休息期被添加到规则集中。
以便:
print(offset_date(pd.to_datetime("2023-01-31"), 1))
# 2023-02-22 00:00:00 as expected
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.