我有一个pandas框架与员工PTO条目:
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
Run Code Online (Sandbox Code Playgroud)
我试图找到每个员工连续几天的PTO持续时间.例如,员工#1的最长PTO持续时间为3天(2017年1月1日至1月3日),员工#2的最长PTO持续时间为4天(2017年9月5日至9月8日).
对于大熊猫groupby和shift我应该用来回答这个问题的组合,我有点难过.
奖励积分:查找X天内所有员工的所有PTO持续时间.
请让我知道,如果你有任何问题.
使用diff与cumsum每个雇员标识中创建subgruop,然后我们做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
Run Code Online (Sandbox Code Playgroud)