上一主题

numpy.is_busday

下一主题

numpy.busday_count

numpy.busday_offset

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

首先根据roll规则将日期调整为有效日期,然后将偏移量应用于在有效天计算的给定日期。

版本1.7.0中的新功能。

参数:

日期:array_like of datetime64 [D]

要处理的日期的数组。

offsets:array_like of int

偏移数组,使用dates广播。

roll:{'raise','nat','forward','following','backward','preceding','modifiedfollowing','modifiedpreceding'

如何处理不在有效日期的日期。默认值为'raise'。

  • “raise”是指为无效日提出异常。
  • 'nat'意味着返回一个无效日的NaT(不是一次)。
  • “向前”和“跟随”意味着采取第一个有效的一天后的时间。
  • “向后”和“在先”意味着采用时间上早的第一个有效日。
  • 'modifiedfollowing'意味着在第一个有效的日期之后,除非跨越一个月的边界,在这种情况下采取第一个有效的一天的时间。
  • “modifiedpreceding”意味着取得第一个有效的时间,除非它跨越一个月的边界,在这种情况下采取第一个有效的一天后的时间。

weekmask:str或array_like of bool,可选

一个七元素数组,表示星期一到星期日是有效日期。可以指定为长度为七的列表或数组,如[1,1,1,1,1,0,0];一个长度为七的字符串,如'1111100';或像“星期二星期三星期三星期五”的字符串,由工作日的3个字符的缩写组成,可选地由空格分隔。有效的缩写是:周一周二周三周四周五周六周日

节假日:array_like of datetime64 [D],可选

要视为无效日期的日期数组。它们可以以任何顺序指定,并且NaT(非一次性)日期被忽略。此列表以适用于快速计算有效天数的规范化形式保存。

busdaycal:busdaycalendar,可选

指定有效天数的busdaycalendar对象。如果提供此参数,则不能提供周期掩码和假日。

out:datetime64的数组[D],可选

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

返回:

out:datetime64的数组[D]

具有广播datesoffsets的形状的数组,包含应用偏移的日期。

也可以看看

busdaycalendar
指定一组自定义有效天数的对象。
is_busday
返回指示有效天数的布尔数组。
busday_count
计算半天开放日期范围内有多少有效天数。

例子

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