如何计算一个月的第n个工作日?

问题描述 投票:0回答:2

如何使用 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 个工作日。

python numpy datetime calendar python-dateutil
2个回答
1
投票

从必要的导入开始:

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,美国独立日


0
投票

AttributeError:类型对象“USFederalHolidayCalendar”没有属性“offsets”

© www.soinside.com 2019 - 2024. All rights reserved.