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 中的日期中提取月份