Python将int添加到日期中并且仅返回工作日日期而忽略周末

标签 python pandas dataframe

我有以下数据框

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/

相关文章:

python - 基于另一列的值对 Pandas DF 的一列进行条件操作

python - 将元组 append 到列表 - 两种方式有什么区别?

python - pandas.series.apply 与 self bultt 功能不起作用

python Pandas 错误: too many indices for array

python - 使用 seaborn barplot 绘制宽格式数据帧

python-3.x - Pandas 窗口聚合两个排序表

python - 如何返回标签的原始值

python - 如何使用 pandas 在 ndarray 上创建索引

python - 如何根据条件为 Pandas 数据框中的行组分配唯一值?

python - 在 Pandas 中连接两个数据框的行