我有以下数据框
df = pd.DataFrame({'Start_Date': ['2018-08-23', '2018-08-16', '2018-08-24', '2018-08-29'], 'Days': ['3', '1', '3', '0']})
我想创建一个新列“End_Date”。结束日期将为开始日期 + 天数。另外,End_Date 只能是工作日(不包括周末)。
预期结果
Start Date Days End_Date
2018-08-23 3 2018-08-28
2018-08-16 1 2018-08-17
2018-08-24 3 2018-08-29
2018-08-29 0 2018-08-29
我尝试使用 omz 中的解决方案但这对我不起作用。我尝试过使用工作日功能,但这也不起作用。
有什么想法吗?
最佳答案
您可以使用BDay这样:
from pandas.tseries.offsets import BDay
df['Start_Date'] = pd.to_datetime(df['Start_Date'])
df['End_Date'] = df.apply(lambda x: x['Start_Date'] + BDay(x['Days']), axis=1)
输出:
Days Start_Date End_Date
0 3 2018-08-23 2018-08-28
1 1 2018-08-16 2018-08-17
2 3 2018-08-24 2018-08-29
3 0 2018-08-29 2018-08-29
关于Python将int添加到日期中并且仅返回工作日日期而忽略周末,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53494332/