我有一个数据框(df),其中有start_date和add_days列(=10)。我想创建目标日期 (= start_date + add_days)
,但要排除周末和节假日(节假日的数据框已给出)。
我进行了一些研究并尝试了以下方法。
from datetime import date, timedelta
import datetime as dt
df["star_date"] = pd.to_datetime(df["star_date"])
Holidays['Date_holi'] = pd.to_datetime(Holidays['Date_holi'])
def date_by_adding_business_days(from_date, add_days, holidays):
business_days_to_add = add_days
current_date = from_date
while business_days_to_add > 0:
current_date += datetime.timedelta(days=1)
weekday = current_date.weekday()
if weekday >= 5: # sunday = 6
continue
if current_date in holidays:
continue
business_days_to_add -= 1
return current_date
#demo:
base["Target_date"]=date_by_adding_business_days(df["start_date"], 10, Holidays['Date_holi'])
但是我遇到了这个错误:
属性错误:'Series' 对象没有 'weekday' 属性
感谢您的帮助。
pandas.tseries.offsets.CustomBusinessDay
。你可以指定一个节假日日历,然后就可以按N
天偏移,排除周末和那些节假日。 - ALollz