numpy.busday_offset#
- numpy.busday_offset(dates, offsets, roll='raise', weekmask='1111100', holidays=None, busdaycal=None, out=None)#
首先根据
roll规则将日期调整为有效日期,然后将以有效天数计算的偏移量应用于给定的日期.- 参数:
- datesdatetime64[D] 的类数组
要处理的日期数组.
- offsets类数组的 int
偏移量数组,与
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” 的字符串,由工作日的三字符缩写组成,可选地用空格分隔. 有效的缩写为:Mon Tue Wed Thu Fri Sat Sun
- holidaysdatetime64[D] 的类数组,可选
用于指定无效日期的一个日期数组.这些日期可以按任意顺序指定,并且会忽略 NaT(非时间)日期.此列表以规范化的形式保存,适用于快速计算有效天数.
- busdaycalbusdaycalendar,可选
一个
busdaycalendar对象,用于指定有效天数.如果提供了此参数,则不能提供 weekmask 和 holidays.- outdatetime64[D] 数组,可选
如果提供,此数组将填充结果.
- 返回:
- outdatetime64[D] 数组
一个形状通过广播
dates和offsets得到的数组,包含应用了偏移量的日期.
参见
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')