Pandas:获取开始日期和结束日期之间的工作日


您可以使用以下方法获取 pandas 中的工作日:

方法 1:获取工作日(不包括所有周末)

 business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ')

方法 2:获取工作日(不包括所有周末联邦假日)

 from pandas. tseries . holiday import USFederalHolidayCalendar
from pandas. tseries . offsets import CustomBusinessDay

#define US business days
us_bus = CustomBusinessDay(calendar=USFederalHolidayCalendar())

#get all business days between certain start and end dates
us_business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ', freq=us_bus)

以下示例展示了如何在实践中使用每种方法。

示例 1:获取工作日(不包括所有周末)

获取 pandas 中两个日期之间的工作日列表的一种方法是使用bdate_range()函数。

请注意,此函数仅计算开始日期和结束日期之间的天数,不包括周末。

例如,我们可以使用以下语法来计算 1/1/2022 和 12/31/2022 之间的工作日数:

 import pandas as pd

#get all business days between certain start and end dates
business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ')

#view first ten business days
print (business_days[0:10])

DatetimeIndex(['2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06',
               '2022-01-07', '2022-01-10', '2022-01-11', '2022-01-12',
               '2022-01-13', '2022-01-14'],
              dtype='datetime64[ns]', freq='B')

#view total number of business days
len (business_days)

260

名为business_days 的对象包含指定开始日期和结束日期之间的每个工作日。

使用len()函数,我们看到指定的开始日期和结束日期之间的总工作日数为260

示例 2:获取工作日(不包括所有周末联邦假日)

要获取 pandas 中两个日期之间的工作日列表(不包括周末和联邦假日),我们需要使用 pandas tseries模块函数。

例如,我们可以使用以下语法来计算 1/1/2022 到 12/31/2022 之间的工作日数(除周末和节假日外的所有天数):

 from pandas. tseries . holiday import USFederalHolidayCalendar
from pandas. tseries . offsets import CustomBusinessDay

#define US business days
us_bus = CustomBusinessDay(calendar=USFederalHolidayCalendar())

#get all business days between certain start and end dates
us_business_days = pd. bdate_range (' 2022-01-01 ', ' 2022-12-31 ', freq=us_bus)

#view first ten business days
print (us_business_days[0:10])

DatetimeIndex(['2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06',
               '2022-01-07', '2022-01-10', '2022-01-11', '2022-01-12',
               '2022-01-13', '2022-01-14'],
              dtype='datetime64[ns]', freq='C')

#view total number of business days
len (us_business_days)

250

名为us_business_days的对象包含指定开始日期和结束日期之间的所有工作日(周末和节假日除外的所有日期)。

使用len()函数,我们看到指定的开始日期和结束日期之间的总工作日数为250

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

如何在 Pandas 中添加和减去日期中的天数
如何将 DateTime 转换为 Pandas 中的日期
如何从 Pandas 中的日期中提取月份

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注