numpy.busday_offset#
- numpy.busday_offset(dates, offsets, roll='raise', weekmask='1111100', holidays=None, busdaycal=None, out=None)#
首先根據 roll 規則調整日期為有效日,然後將偏移量應用於以有效日計數的給定日期。
- 參數::
- datesdatetime64[D] 陣列型物件
要處理的日期陣列。
- offsetsint 陣列型物件
偏移量陣列,將與 dates 進行廣播。
- roll{‘raise’, ‘nat’, ‘forward’, ‘following’, ‘backward’, ‘preceding’, ‘modifiedfollowing’, ‘modifiedpreceding’},選填
如何處理非有效日的日期。預設值為 ‘raise’。
‘raise’ 表示針對無效日引發例外。
‘nat’ 表示針對無效日傳回 NaT (非時間)。
‘forward’ 和 ‘following’ 表示取時間上較晚的第一個有效日。
‘backward’ 和 ‘preceding’ 表示取時間上較早的第一個有效日。
‘modifiedfollowing’ 表示取時間上較晚的第一個有效日,除非跨越月份邊界,在這種情況下取時間上較早的第一個有效日。
‘modifiedpreceding’ 表示取時間上較早的第一個有效日,除非跨越月份邊界,在這種情況下取時間上較晚的第一個有效日。
- weekmaskstr 或布林陣列型物件,選填
一個七元素陣列,指示週一到週日哪些是有效日。可以指定為長度為七的列表或陣列,例如 [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')