确定一天是否是 Python/Pandas 中的工作日

新手上路,请多包涵

我目前有一个程序设置可以以两种不同的方式运行。一种方法是在指定的时间范围内运行,另一种方法是每天运行。但是,当我将其设置为每天运行时,我只希望它在工作日继续运行。现在,根据研究,我发现您可以像这样使用 Pandas 遍历工作日:

 start = 2016-08-05
end = datetime.date.today().strftime("%Y-%m-%d")

for day in pd.bdate_range(start, end):
    print str(day) + " is a business Day"

当我在指定的时间段内运行我的程序时,这非常有效。

但是当我想让程序每天运行时,我不太清楚如何测试一个特定的日子是否是工作日。基本上我想做这样的事情:

 start = datetime.date.today().strftime("%Y-%m-%d")
end = datetime.date.today().strftime("%Y-%m-%d")

if start == end:
    if not Bdate(start)
        print "Not a Business day"

我知道我可能可以设置 pd.bdate_range() 来做我正在寻找的事情,但在我看来会很草率而且不直观。我觉得必须有一个更简单的解决方案。有什么建议吗?

原文由 Justin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 465
2 个回答

由于 lenpd.bdate_range() 告诉我们在提供的日期范围内有多少个工作日,我们可以将其转换为 bool 的范围一天是一个工作日:

 def is_business_day(date):
    return bool(len(pd.bdate_range(date, date)))

原文由 Zev Averbach 发布,翻译遵循 CC BY-SA 3.0 许可协议

在熊猫中有内置方法可以做到这一点。

对于 Pandas 版本 <1.0

 from pandas.tseries.offsets import Day, BDay
from datetime import datetime

bday=BDay()
is_business_day = bday.onOffset(datetime(2020,8,20))

对于 Pandas 版本 >=1.1.0 (不推荐使用 onOffset

 from pandas.tseries.offsets import Day, BDay
from datetime import datetime

bday=BDay()
is_business_day = bday.is_on_offset(datetime(2020,8,20))

原文由 Raghava Dhanya 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题