如何获得最后10个工作日,如果



我想创建基于最近10个工作日的数据框架。此外,它应该检查这一天是否是公共假日。我有一个公共假期的列表。

公众假期列表为:

2021-01-26 2021-03-112021-03-292021-04-022021-04-142021-04-212021-05-132021-07-212021-08-192021-09-102021-10-152021-11-042021-11-052021-11-19

@pi_pascal:

hols = ["2021-01-26", "2021-03-11", "2021-03-29", "2021-04-02",
"2021-04-14", "2021-04-21", "2021-05-13", "2021-07-21",
"2021-08-19", "2021-09-10", "2021-10-15", "2021-11-04",
"2021-11-05", "2021-11-19"]
hols = pd.to_datetime(hols)
bdays = pd.bdate_range(end=pd.Timestamp.today(), periods=60, freq="1D", closed="left")
bdays = bdays[bdays.weekday < 5].difference(hols)[-10:]
>>> bdays
DatetimeIndex(['2021-02-15', '2021-02-16', '2021-02-17', '2021-02-18',
'2021-02-19', '2021-02-22', '2021-02-23', '2021-02-24',
'2021-02-25', '2021-02-26'],
dtype='datetime64[ns]', freq=None)

我没有测试这段代码,但它应该可以工作

import datetime 
today = datetime.datetime.now()
business_days = []
#holidays = [ your list of holidays in here ] 
i = 0
while True:
temp_date = today - datetime.timedelta(i)
if temp_date.weekday() in (0,1,2,3,4) and temp_date not in holidays:
if len(business_days)<10:
business_days.append(temp_date) 
else:
break      
i += 1

print(business days) 

注意:如果您需要以特定格式显示日期,则需要设置日期的格式

可以使用pandas内置函数date_range

对你来说,它将是


import pandas as pd
today = '2021-02-27'
businessDays = pd.date_range(end='2021-02-27', periods=14, freq='D').to_series()
businessDays = businessDays[businessDays.dt.dayofweek < 5]
print(businessDays)

输出如下:

2021-02-15
2021-02-16 
2021-02-17 
2021-02-18
2021-02-19
2021-02-22
2021-02-23
2021-02-24
2021-02-25
2021-02-26

相关内容

最新更新