计算阵列和数据帧输入之间的工作日

2024-04-25 16:36:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有一个函数,它可以帮助计算两个日期之间的运行总天数,以计算分组记录上的重叠

数据帧示例:

id start_dt    end_dt
1  2021-01-01  2021-01-14
1  2021-01-01  2021-01-15
1  2021-01-13  2021-01-16
2  2021-02-01  2021-01-04
2  2021-02-01  2021-01-07

代码:

def make_diff(dg):
    prev = dg['Complete_Date'].shift()    # the end date of previous row
    # compute the actual start date
    start = np.where(prev.isna()|(prev<dg['Start_Date']), dg['Start_Date'], prev)
    # and returns the Series
    return (dg.set_index('index')['Complete_Date'] - (start)).rename('diff')
 
all_data['diff'] = all_data.reset_index().groupby('ID').apply(make_diff).reset_index(level=0)['diff']

输出:

id start_dt    end_dt      diff
1  2021-01-01  2021-01-14  14
1  2021-01-01  2021-01-15  1
1  2021-01-13  2021-01-16  1
2  2021-02-01  2021-01-04  4
2  2021-02-01  2021-01-07  3

我希望更新此函数以计算工作日(即busday_count())的日期差异

我一直在尝试使用np.busday_count()来转换输入以实现这一点

任何帮助都将不胜感激


热门问题