Skip to main content
 首页 » 编程设计

python之Pandas之groupby "longest"带薪休假 (PTO) 持续时间

2025年05月04日22JustinYoung

我有一个带有员工 PTO 条目的 pandas 框架:

employee_id time_off_date 
1           1/1/2017 
1           1/2/2017 
1           1/3/2017 
1           5/1/2017 
2           6/1/2017 
2           9/5/2017 
2           9/6/2017 
2           9/7/2017 
2           9/8/2017 

我正在尝试找出每个员工连续使用 PTO 的最长持续时间。例如,员工 #1 的最长 PTO 持续时间为 3 天(1/1/2017 至 1/3/2017),员工 #2 的最长 PTO 持续时间为 4 天(9/5/2017 至 9/8/2017)。

我对应该使用哪种 pandas groupby 和 shift 组合来回答这个问题感到困惑。

奖励积分:查找所有员工在 X 天内的所有 PTO 持续时间。

如果您有任何问题,请告诉我。

请您参考如下方法:

使用 diff与 cumsum在每个 employee_id 中创建子组,然后我们做 groupby size与 max找到最大值

s=df.groupby('employee_id').time_off_date.apply(lambda x : x.diff().dt.days.ne(1).cumsum()) 
df['New']=s 
df.groupby(['employee_id','New']).size().max(level=0) 
Out[423]:  
employee_id 
1    3 
2    4 
dtype: int64