當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python Pandas bdate_range方法用法及代碼示例

Pandas bdate_range(~) 方法返回包含指定工作日的 DatetimeIndex

參數

1.start | numericdatetime-like | optional

範圍的下限。默認情況下,start=None

2. end | numericdatetime-like | optional

範圍的上限。默認情況下,end=None

3. periods | int | optional

所需的日期數量。默認情況下,periods=None

警告

在上述三個參數中,您隻需指定兩個。

4. freq | stringDateOffset | optional

兩個連續日期之間的偏移量。默認情況下,freq="B"(單個工作日)。

5. tz | strNone | optional

對生成的 DatetimeIndex 進行編碼的時區。

6. normalize | boolean | optional

是否將每個日期的時間單位設置為午夜。默認情況下,normalize=True

7. name | string | optional

分配給結果 DatetimeIndex 的名稱。默認情況下,name=None

8. weekmask | stringNone | optional

一周中被視為工作日的日子。默認情況下,weekmask=None 相當於:

"Mon Tue Wed Thu Fri"

如果你設置weekmask,那麽你還必須設置freq="C",這代表CustomBusinessDay.

9. holidays | array-likeNone | optional

被視為非工作日的日期 如果您設置holidays,那麽你還必須設置freq="C",這代表CustomBusinessDay.

10.closed | string | optional

是否使邊界包含/排除:

說明

"left"

  • 包含左端點。

  • 右端點是獨占的。

"right"

  • 左端點是獨占的。

  • 右端點包含在內。

"both"

兩個端點都包含在內。

"neither"

兩個端點都是互斥的。

默認情況下,closed="right"

返回值

保存指定工作日的 DatetimeIndex

例子

基本用法

要獲取包含兩個日期之間的工作日的 DatetimeIndex

pd.bdate_range(start='12/19/2019', end='12/24/2019')



DatetimeIndex(['2019-12-19', '2019-12-20', '2019-12-23', '2019-12-24'], dtype='datetime64[ns]', freq='B')

請注意,2019-12-21(星期六)和2019-12-22(星期日)缺失,因為默認情況下周末不被視為工作日。

指定期間

要獲得 3 個工作日的 DatetimeIndex

pd.bdate_range(start='12/19/2019', periods=3)



DatetimeIndex(['2019-12-19', '2019-12-20', '2019-12-23'], dtype='datetime64[ns]', freq='B')

您還可以指定 endperiods 的組合,如下所示:

pd.bdate_range(end='12/19/2019', periods=3)



DatetimeIndex(['2019-12-17', '2019-12-18', '2019-12-19'], dtype='datetime64[ns]', freq='B')

指定頻率

默認情況下, freq="B" ,這意味著將使用單個工作日的偏移量:

pd.bdate_range(start='12/19/2019', periods=3)   # freq="B"



DatetimeIndex(['2019-12-19', '2019-12-20', '2019-12-23'], dtype='datetime64[ns]', freq='B')

要為每對連續日期設置 2 個工作日的偏移量:

pd.bdate_range(start='12/19/2019', periods=3, freq="2B")



DatetimeIndex(['2019-12-19', '2019-12-23', '2019-12-25'], dtype='datetime64[ns]', freq='2B')

此處,2012-12-21 是星期六,因此已從結果中排除。

指定 tz

要將 Asia/Tokyo 的時區編碼到結果 DatetimeIndex 中:

pd.bdate_range(start='12/20/2019', periods=3, tz="Asia/Tokyo")



DatetimeIndex(['2019-12-20 00:00:00+09:00', '2019-12-23 00:00:00+09:00',
               '2019-12-24 00:00:00+09:00'],
              dtype='datetime64[ns, Asia/Tokyo]', freq='B')

指定標準化

默認情況下, normalize=True ,這意味著日期的時間單位重置為午夜:

pd.bdate_range(start='12/20/2019 15:30:00', periods=3)   # normalize=True



DatetimeIndex(['2019-12-20', '2019-12-23', '2019-12-24'], dtype='datetime64[ns]', freq='B')

要保留有關時間單位的信息,請設置 normalize=False

pd.bdate_range(start='12/20/2019 15:30:00', periods=3, normalize=False)



DatetimeIndex(['2019-12-20 15:30:00', '2019-12-23 15:30:00',
               '2019-12-24 15:30:00'],
              dtype='datetime64[ns]', freq='B')

指定名稱

為生成的 DatetimeIndex 指定名稱:

idx = pd.bdate_range(start='12/20/2019', periods=2, name="My Dates")
idx



DatetimeIndex(['2019-12-20', '2019-12-23'], dtype='datetime64[ns]', name='My Dates', freq='B')

從此索引創建DataFrame:

pd.DataFrame({"A":[1,2]}, index=idx)



            A
My Dates  
2019-12-20  1
2019-12-23  2

請注意 DataFrame 的索引如何顯示我們分配的name

指定周掩碼

要更改一周中被視為工作日的日子,請設置 weekmask 參數,如下所示:

pd.bdate_range(start='12/19/2019', freq="C", periods=4, weekmask="Mon Tue Wed Thu")



DatetimeIndex(['2019-12-19', '2019-12-23', '2019-12-24', '2019-12-25'], dtype='datetime64[ns]', freq='C')

當通過weekmask參數,您還必須指定freq="C".在這裏,C代表CustomBusinessDay.

指定假期

要設置被視為非工作日的日期,請設置 holidays 參數,如下所示:

holidays = ['2019-12-23']
pd.bdate_range(start='12/19/2019', freq="C", periods=4, holidays=holidays)



DatetimeIndex(['2019-12-19', '2019-12-20', '2019-12-24', '2019-12-25'], dtype='datetime64[ns]', freq='C')

請注意 2019-12-23 (周一)如何從返回的 DatetimeIndex 中排除。

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas | bdate_range method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。