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')