我正试图根据一个稍微定制的日历计算未来的第5个工作日。然而,劳工节(9月美国假日)的数值计算不正确,而1月和7月(其他可能受假期影响的月份)的数值计算正确。
我已经尝试过使用^{{cd1>,但是这只会将问题从9月份的值不正确,转移到一天之内关闭一月和七月的值。
import pandas as pd
from datetime import datetime
start = datetime(2019,1,1)
end = datetime(2024,8,1)
dtrange = pd.date_range(start, end, freq='MS')
dts = pd.Series(dtrange)
hols = holidays.UnitedStates(state='MD', years=[2019,2020,2021,2022,2023,2024])
notholidays = ['American Indian Heritage Day', 'Columbus Day', 'Veterans Day']
realhols = [i for i in sorted(hols.items()) if i[1] not in notholidays]
realholsdt = [i[0] for i in realhols]
custom_bday = pd.offsets.CustomBusinessDay(holidays=realholsdt)
dts + 4 * custom_bday
预期的结果是每个月的第5个工作日,不包括周末和假期。然而,所有的劳动节假期(9月)都是假的,例如
见:2019-09-06 8
预计:2019-09-09 8
您可以通过
CustomBusinessMonthBegin
获得当月的第一个工作日,同时计算CustomUSHolidayCalendar
。在您的自定义日历中,确保您正确地抵消了劳动日(如果这是您想要的),并添加/删除任何假日。在您的date_range
中使用它,方法是将它添加到freq
参数中。在最后,将第一个工作日抵消4个工作日。在
^{pr2}$相关问题 更多 >
编程相关推荐