numpy.busday_offset#

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

首先根据 roll 规则调整日期,使其落在有效日期上,然后对给定日期应用偏移量,这些偏移量以有效天数计算.

在 1.7.0 版本加入.

参数:
dates类似数组的时间日期64[D]

要处理的日期数组.

offsets类数组的整数

偏移量数组,与 dates 一起广播.

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

如何处理不落在有效日期的日期.默认是 ‘raise’.

  • ‘raise’ 意味着为一个无效的天数引发一个异常.

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

  • ‘forward’ 和 ‘following’ 意味着选择时间上更晚的第一个有效日.

  • ‘backward’ 和 ‘preceding’ 意味着在时间上取第一个有效的前一天.

  • ‘modifiedfollowing’ 意味着除非跨越月份界限,否则取时间上第一个有效日;如果是跨越月份界限,则取时间上较早的第一个有效日.

  • ‘modifiedpreceding’ 意味着除非跨越月份界限,否则取时间上更早的第一个有效日;如果是跨越月份界限,则取时间上更晚的第一个有效日.

weekmaskstr 或 bool 类型的类数组对象,可选

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

holidays类似数组的 datetime64[D],可选

一个被认为是无效日期的日期数组.它们可以按任何顺序指定,并且 NaT(非时间)日期将被忽略.此列表以适合快速计算有效日期的规范化形式保存.

busdaycalbusdaycalendar, 可选的

一个指定有效日期的 busdaycalendar 对象.如果提供了此参数,则不能同时提供 weekmask 或 holidays.

outdatetime64[D] 数组,可选

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

返回:
outdatetime64[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')