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

2024-04-25 15:03:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有一个程序设置运行两种不同的方式。一种方法是在规定的时间内跑步,另一种方法是每天跑步。但是,当我把它设置为每天运行时,我只希望它在工作日继续运行。现在从研究中我发现,你可以使用熊猫来迭代工作日,比如:

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()来完成我想要的任务,但在我看来,这样做太草率,而且不直观。我觉得必须有一个更简单的解决办法。有什么建议吗?


Tags: 方法程序todaydatetimedaterangestart跑步
3条回答

请检查此模块-bdateutil

请使用以上模块检查以下代码:

from bdateutil import isbday
from datetime import datetime,date
now = datetime.now()
val = isbday(date(now.year, now.month, now.day))
print val

如果有帮助,请告诉我。

使用至少numpy版本1.7.0,尝试^{}

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

if start == end:

    # added code here
    if not np.is_busday(start):
        print("Not a Business day")

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

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

相关问题 更多 >