CustomBusinessDay() 的此代碼作業正常:
from datetime import datetime
from pandas.tseries.offsets import CustomBusinessDay
runday = datetime(2021,12,30).date()
nextday = (runday CustomBusinessDay()).date()
輸出 1:
In [26]: nextday
Out[26]: datetime.date(2021, 12, 31)
但是,當在日期功能中添加可選日歷時,即使根據以下指定日歷今天的日期(2021 年 12 月 31 日)不是假日,它也會生成下一個作業日:
from pandas.tseries.holiday import AbstractHolidayCalendar, Holiday, \
USMemorialDay, USMartinLutherKingJr, USPresidentsDay, GoodFriday, \
USLaborDay, USThanksgivingDay, nearest_workday
class NYSECalendar(AbstractHolidayCalendar):
''' NYSE holiday calendar via pandas '''
rules = [
Holiday('New Years Day', month=1, day=1, observance=nearest_workday),
USMartinLutherKingJr,
USPresidentsDay,
GoodFriday,
USMemorialDay,
Holiday('USIndependenceDay', month=7, day=4, observance=nearest_workday),
USLaborDay,
USThanksgivingDay,
Holiday('Christmas', month=12, day=25, observance=nearest_workday),
]
nextday = (runday CustomBusinessDay(calendar=NYSECalendar())).date()
輸出2:
In [27]: nextday
Out[27]: datetime.date(2022, 1, 3)
uj5u.com熱心網友回復:
此行是您的問題所在的位置:
Holiday('New Years Day', month=1, day=1, observance=nearest_workday)
如果你看一下源代碼,就nearest_workday意味著如果是周六,則是周五,如果是周日,則是周一。由于 2022 年元旦是星期六,因此根據您的日歷,今天 (12/31/2021) 會被觀察到。
洗掉observance引數將導致輸出2021-12-31.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/400821.html
下一篇:創建具有最大值(AZ)的列
