numpy.busday_offset#
- numpy.busday_offset(dates, offsets, roll='raise', weekmask='1111100', holidays=None, busdaycal=None, out=None)#
首先根据
roll
规则调整日期以落在有效日期上,然后将偏移量应用于给定日期,这些偏移量以有效日期计算。版本 1.7.0 中新增。
- 参数:
- datesdatetime64[D] 的数组类型
要处理的日期数组。
- offsets整数的数组类型
偏移量数组,与
dates
进行广播。- roll{'raise', 'nat', 'forward', 'following', 'backward', 'preceding', 'modifiedfollowing', 'modifiedpreceding'}, 可选
如何处理不落在有效日期上的日期。默认值为 ‘raise’。
‘raise’ 表示对无效日期引发异常。
‘nat’ 表示对无效日期返回 NaT(非时间)。
‘forward’ 和 ‘following’ 表示取时间上第一个有效的日期。
‘backward’ 和 ‘preceding’ 表示取时间上第一个有效的日期。
‘modifiedfollowing’ 表示取时间上第一个有效的日期,除非跨越月边界,在这种情况下取时间上第一个有效的日期。
‘modifiedpreceding’ 表示取时间上第一个有效的日期,除非跨越月边界,在这种情况下取时间上第一个有效的日期。
- weekmask字符串或布尔值的数组类型,可选
一个七元素数组,指示星期一到星期日中哪些是有效日期。可以指定为长度为七的列表或数组,例如 [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')