我有一个数据帧(df),其中包含开始日期列和添加日期列(=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'])
但我得到了这个错误:
AttributeError: 'Series' object has no attribute 'weekday'
谢谢你的帮助
ALollz的评论非常有效;在创建过程中自定义日期,以便只保留针对您的问题定义的工作日,这将是最佳选择
但是,我假设您不能预先定义工作日,您需要使用按原样构建的数据框架来解决问题
以下是一种可能的解决方案:
注意:我没有使用“添加天数”列,因为它只是一个重复值。相反,我为函数increment使用了一个参数,它将增加N天数(默认值为N=10)
希望有帮助
相关问题 更多 >
编程相关推荐