numpy.busday_offset#

numpy.busday_offset(dates, offsets, roll='raise', weekmask='1111100', holidays=None, busdaycal=None, out=None)#

首先根据 roll 规则调整日期使其落在有效工作日,然后将偏移量应用于给定日期,并以有效工作日计数。

参数:
datesarray_like of datetime64[D]

要处理的日期数组。

offsetsarray_like of int

偏移量数组,与 dates 进行广播。

roll{‘raise’, ‘nat’, ‘forward’, ‘following’, ‘backward’, ‘preceding’, ‘modifiedfollowing’, ‘modifiedpreceding’},可选

如何处理不落在有效工作日的日期。默认为 ‘raise’。

  • ‘raise’ 意味着对无效日期抛出异常。

  • ‘nat’ 意味着对无效日期返回一个 NaT (非时间)。

  • ‘forward’ 和 ‘following’ 意味着取时间上第一个随后的有效工作日。

  • ‘backward’ 和 ‘preceding’ 意味着取时间上第一个之前的有效工作日。

  • ‘modifiedfollowing’ 意味着取时间上第一个随后的有效工作日,除非它跨越了月份边界,在这种情况下取时间上第一个之前的有效工作日。

  • ‘modifiedpreceding’ 意味着取时间上第一个之前的有效工作日,除非它跨越了月份边界,在这种情况下取时间上第一个随后的有效工作日。

weekmaskstr or array_like of bool,可选

一个七元素数组,指示周一至周日中哪些是有效工作日。可以指定为长度为七的列表或数组,例如 [1,1,1,1,1,0,0];一个长度为七的字符串,例如 ‘1111100’;或者一个像 “Mon Tue Wed Thu Fri” 这样的字符串,由工作日的3字符缩写组成,可选地用空格分隔。有效缩写为:Mon Tue Wed Thu Fri Sat Sun

holidaysarray_like of datetime64[D],可选

要视为无效日期的日期数组。它们可以按任意顺序指定,NaT (非时间) 日期将被忽略。此列表以标准化形式保存,适用于快速计算有效工作日。

busdaycalbusdaycalendar,可选

一个 busdaycalendar 对象,用于指定有效工作日。如果提供了此参数,则不能同时提供 weekmask 或 holidays。

outarray of datetime64[D],可选

如果提供,此数组将填充结果。

返回:
outarray of datetime64[D]

一个数组,其形状由 datesoffsets 广播而成,包含应用了偏移量的日期。

另请参阅

busdaycalendar

一个指定自定义有效工作日集的对象。

is_busday

返回一个布尔数组,指示有效工作日。

busday_count

计算半开日期范围中有多少个有效工作日。

示例

>>> import numpy as np
>>> # First business day in October 2011 (not accounting for holidays)
... np.busday_offset('2011-10', 0, roll='forward')
np.datetime64('2011-10-03')
>>> # Last business day in February 2012 (not accounting for holidays)
... np.busday_offset('2012-03', -1, roll='forward')
np.datetime64('2012-02-29')
>>> # Third Wednesday in January 2011
... np.busday_offset('2011-01', 2, roll='forward', weekmask='Wed')
np.datetime64('2011-01-19')
>>> # 2012 Mother's Day in Canada and the U.S.
... np.busday_offset('2012-05', 1, roll='forward', weekmask='Sun')
np.datetime64('2012-05-13')
>>> # First business day on or after a date
... np.busday_offset('2011-03-20', 0, roll='forward')
np.datetime64('2011-03-21')
>>> np.busday_offset('2011-03-22', 0, roll='forward')
np.datetime64('2011-03-22')
>>> # First business day after a date
... np.busday_offset('2011-03-20', 1, roll='backward')
np.datetime64('2011-03-21')
>>> np.busday_offset('2011-03-22', 1, roll='backward')
np.datetime64('2011-03-23')