如何使用 python 计算一个月中除美国假期外的第 3、5 等工作日?
import calendar
import datetime
now = datetime.datetime.now()
cal = calendar.Calendar()
working_days = len([x for x in cal.itermonthdays2(now.year, now.month) if x[0] !=0 and x[1] < 5])
print("Total working days this month: " + str(working_days)
这会返回工作日数,但我需要它来检查输入的日期是该月的第 3 个、第 5 个或第 n 个工作日。
从必要的导入开始:
from pandas.tseries.holiday import USFederalHolidayCalendar
然后根据美国假期创建自定义日历:
usb = pd.offsets.CustomBusinessDay(calendar = USFederalHolidayCalendar())
查找第 n 个工作日,例如2023 年 7 月,开始定义前一天的最后一天 相关月份:
ts = pd.Timestamp(2023, 6, 30)
并找到例如本月第三个工作日,运行:
ts + 3 * usb
得到
Timestamp('2023-07-06 00:00:00')
.
但是如果你想找到特定范围内的all营业日,运行 例如:
pd.date_range('2023-07-01', '2023-07-15', freq=usb)
得到:
DatetimeIndex(['2023-07-03', '2023-07-05', '2023-07-06', '2023-07-07',
'2023-07-10', '2023-07-11', '2023-07-12', '2023-07-13',
'2023-07-14'],
dtype='datetime64[ns]', freq='C')
如您所见,此列表不包括例如2023-07-04,美国独立日
AttributeError:类型对象“USFederalHolidayCalendar”没有属性“offsets”