Python Pandas – 创建CustomBusinessDay偏移量对象
在Pandas中,CustomBusinessDay对象可以用来进行自定义的工作日计算。
更多Pandas相关文章,请阅读:Pandas 教程
CustomBusinessDay的创建
使用Pandas的CustomBusinessDay
函数可以创建自定义的工作日。我们来看一个例子:
import pandas as pd
from pandas.tseries.offsets import CustomBusinessDay
# 创建工作日偏移量对象
my_offset = CustomBusinessDay(weekmask='Sun Mon Tue Wed Thu', holidays=['2021-10-01'])
# 创建日期范围
date_rng = pd.date_range(start='2021-09-28', end='2021-10-05', freq=my_offset)
# 输出日期范围
for date in date_rng:
print(date.date())
在上面的代码中,我们首先导入了Pandas和CustomBusinessDay
。然后,我们使用CustomBusinessDay
创建了一个工作日偏移量对象my_offset
,其中指定了周一到周五为工作日,而10月1日为假日。
接下来,我们使用pd.date_range
创建了一个包括2021-09-28
到2021-10-05
之间所有符合工作日偏移量要求的日期范围,并用for
循环遍历输出。
输出的结果为:
2021-09-28
2021-09-29
2021-09-30
2021-10-03
2021-10-04
2021-10-05
可以看到,除了10月1日这个假日之外,其它的所有符合要求的日期都被正确输出了。
自定义工作日
除了上面的例子外,我们还可以创建更为复杂的CustomBusinessDay对象。下面是一个例子:
from pandas.tseries.offsets import CustomBusinessDay
from pandas.tseries.holiday import USFederalHolidayCalendar
from datetime import time
# 创建工作日偏移量对象
my_offset = CustomBusinessDay(calendar=USFederalHolidayCalendar(), weekmask='Mon Tue Wed Thu Fri', start='09:00', end='16:00')
# 创建日期范围
date_rng = pd.date_range(start='2021-09-27', end='2021-10-04', freq=my_offset)
# 输出日期范围
for date in date_rng:
print(date)
上面的代码中,我们使用了Pandas中内置的USFederalHolidayCalendar对象作为假日,指定了周一到周五为工作日,并且定义了工作时间段为9点到16点。
因此,在执行上述代码后,结果如下:
2021-09-27 09:00:00
2021-09-28 09:00:00
2021-09-29 09:00:00
2021-09-30 09:00:00
2021-10-01 09:00:00
2021-10-04 09:00:00
值得注意的是,我们在输出日期时,得到的日期都包括了定义的工作时间段的起始时间9点。
结论
CustomBusinessDay是一个十分实用的工具,可以用来帮助我们计算工作日。通过创建不同的CustomBusinessDay对象,我们可以自定义出符合实际需要的工作日,然后通过它来计算日期范围。虽然在使用时可能较为繁琐,但只要熟悉了相关的用法,我们就可以针对不同情况调整自定义工作日的参数,以应对各种日期计算需求。