Pandas - групповая «самая большая» продолжительность Paid Time Off (PTO) - PullRequest
0 голосов
/ 30 мая 2018

У меня есть рамка 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

Я пытаюсь найти наибольшую продолжительность последовательных дней PTO, которую занимал каждый сотрудник.Например, самый длинный срок действия ВОМ сотрудника № 1 составляет 3 дня (с 01.01.2017 по 01.03.2017), а самый длинный срок действия ВОМ сотрудника № 4 составляет 4 дня (с 5 октября 2017 года по 9 августа 2017 года).

Я немного озадачен тем, какую комбинацию панд groupby и shift я должен использовать, чтобы ответить на этот вопрос.

Бонусные баллы: найдите все длительности ВОМ для всех сотрудников за X дней.

Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы.

1 Ответ

0 голосов
/ 30 мая 2018

Используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...