熊猫 - 由付费时间关闭(PTO)的"最长"持续时间

Nic*_*gel 1 python pandas

我有一个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日).

对于大熊猫groupbyshift我应该用来回答这个问题的组合,我有点难过.

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

请让我知道,如果你有任何问题.

WeN*_*Ben 5

使用diffcumsum每个雇员标识中创建subgruop,然后我们做groupby sizemax发现最大

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)

  • `df.groupby('employee_id')['time_off_date'].apply(lambda x:x.groupby(x.diff().dt.days.ne(1).cumsum()).count()).max (级别= 0)` (2认同)