如何在Python中查找两个日期之间不包括周末和某些假期的小时数?营业时间套餐

Amy*_*myN 5 numpy pandas python-3.5

我正在尝试找到一种非常干净的方法来计算两个日期之间的小时数(不包括周末某些假期)

我发现 BusinessHours 包(https://pypi.python.org/pypi/BusinessHours/1.01)可以做到这一点。但是我没有找到任何关于如何使用该包(实际上是语法)的说明,特别是如何输入假期。我找到了该包的原始代码(https://github.com/dnel/BusinessHours/blob/master/BusinessHours.py),但仍然不太确定。我想可能是这样的:

date1 = pd.to_datetime('2017-01-01 00:00:00')
date2 = pd.to_datetime('2017-01-22 12:00:00')
import BusinessHour
gethours(date1, date2, worktiming=[8, 17], weekends=[6, 7])
Run Code Online (Sandbox Code Playgroud)

不过,我可以在哪里输入假期呢?如果我不想排除非办公时间,我是否只需将其调整worktimingworktiming=[0,23]

有谁知道如何使用这个包请告诉我。我很感激。

P/s:我知道 numpy 中有一个命令可以获取两个日期之间的工作日数(busday_count),但没有命令可以获取以小时为单位的结果。pandas 或 numpy 中任何其他可以完成任务的命令也受到欢迎。谢谢

小智 0

该软件包 1.2 的最新 pip 安装在第 51 行有一个错误,其中包含“extraday”,需要将其更改为“extradays”。

我也一直在互联网上搜索一些可行的代码来计算工作时间和工作日。这个包有一些调整,但当你启动并运行它时,它工作得很好。

这是我笔记本上的内容:

#import BusinessHours
from BusinessHours import BusinessHours as bh
import numpy as np
import pandas as pd
from pandas import Series, DataFrame

date1 = pd.to_datetime('2017-01-01 00:00:00')
date2 = pd.to_datetime('2017-01-22 12:00:00')
bh(date1, date2, worktiming=[8, 17], weekends=[6, 7]).gethours()
Run Code Online (Sandbox Code Playgroud)

这也在源代码中:

'''
holidayfile - A file consisting of the predetermined office holidays. 
Each date starts in a new line and currently must only be in the format 
dd-mm-yyyy
'''
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助