Мои данные выглядят так:
ID Date_off Approved
1 3/7/2018 1
1 3/8/2018 1
2 3/29/2018 1
2 3/30/2018 1
3 3/30/2018 1
4 4/2/2018 1
5 4/2/2018 1
6 4/2/2018 1
7 4/2/2018 1
8 4/2/2018 1
4 4/3/2018 1
5 4/3/2018 1
6 4/3/2018 1
7 4/3/2018 1
8 4/3/2018 1
4 4/4/2018 1
9 4/4/2018 1
5 4/4/2018 1
10 4/4/2018 1
6 4/4/2018 1
8 4/4/2018 1
9 4/5/2018 1
11 4/5/2018 1
5 4/5/2018 1
10 4/5/2018 1
6 4/5/2018 1
12 4/5/2018 1
8 4/5/2018 1
13 4/10/2018 1
14 4/10/2018 1
15 4/10/2018 1
16 4/10/2018 1
17 4/11/2018 1
13 4/11/2018 1
15 4/11/2018 1
18 4/11/2018 1
16 4/11/2018 1
15 4/12/2018 1
16 4/12/2018 1
16 4/13/2018 1
19 4/16/2018 1
19 4/17/2018 1
20 4/17/2018 1
21 4/18/2018 1
19 4/18/2018 1
20 4/18/2018 1
21 4/19/2018 1
19 4/19/2018 1
20 4/19/2018 1
22 4/20/2018 1
21 4/20/2018 1
20 4/20/2018 1
22 4/23/2018 1
23 4/23/2018 1
22 4/24/2018 1
23 4/24/2018 1
22 4/25/2018 1
23 4/25/2018 1
22 4/26/2018 1
23 4/26/2018 1
14 4/26/2018 1
22 4/27/2018 1
10 4/27/2018 1
23 4/27/2018 1
5 4/27/2018 1
14 4/27/2018 1
8 4/30/2018 1
1 4/30/2018 1
10 4/30/2018 1
23 4/30/2018 1
11 4/30/2018 1
24 4/30/2018 1
25 4/30/2018 1
14 4/30/2018 1
Это список всех дней, когда кто-то был в отпуске.Мне нужно сгруппировать по имени и подсчитать количество дней подряд, когда кто-то был в отпуске, а также первый и последний день.Итак, что я ищу:
Name Days From To
Bob 2 2017-04-06 2017-04-07
Jimy 2 2017-04-07 2017-04-08
Jimy 1 2017-04-10 2017-04-10
....
В настоящее время код Скотта возвращает это:
Approved Date_off Date_off
sum amin amax
ID
1 3 3/7/2018 4/30/2018
2 2 3/29/2018 3/30/2018
3 1 3/30/2018 3/30/2018
4 1 4/2/2018 4/2/2018
4 2 4/3/2018 4/4/2018
5 1 4/2/2018 4/2/2018
5 1 4/3/2018 4/3/2018
5 3 4/4/2018 4/27/2018
6 1 4/2/2018 4/2/2018
6 1 4/3/2018 4/3/2018
6 2 4/4/2018 4/5/2018
7 2 4/2/2018 4/3/2018
8 1 4/2/2018 4/2/2018
8 1 4/3/2018 4/3/2018
8 3 4/4/2018 4/30/2018
9 2 4/4/2018 4/5/2018
10 4 4/4/2018 4/30/2018
11 2 4/5/2018 4/30/2018
12 1 4/5/2018 4/5/2018
13 2 4/10/2018 4/11/2018
14 1 4/10/2018 4/10/2018
14 3 4/26/2018 4/30/2018
15 1 4/10/2018 4/10/2018
15 2 4/11/2018 4/12/2018
16 1 4/10/2018 4/10/2018
16 1 4/11/2018 4/11/2018
16 2 4/12/2018 4/13/2018
17 1 4/11/2018 4/11/2018
18 1 4/11/2018 4/11/2018
19 1 4/16/2018 4/16/2018
19 1 4/17/2018 4/17/2018
19 2 4/18/2018 4/19/2018
20 1 4/17/2018 4/17/2018
20 1 4/18/2018 4/18/2018
20 2 4/19/2018 4/20/2018
21 1 4/18/2018 4/18/2018
21 2 4/19/2018 4/20/2018
22 1 4/20/2018 4/20/2018
22 1 4/23/2018 4/23/2018
22 1 4/24/2018 4/24/2018
22 1 4/25/2018 4/25/2018
22 2 4/26/2018 4/27/2018
23 1 4/23/2018 4/23/2018
23 1 4/24/2018 4/24/2018
23 1 4/25/2018 4/25/2018
23 3 4/26/2018 4/30/2018
24 1 4/30/2018 4/30/2018
25 1 4/30/2018 4/30/2018
Я изменил только последнюю строку на это:
df.groupby(['ID','cons']).agg({'Approved':sum, 'Date_off':[np.min, np.max]}).reset_index(level=1,drop=True)
БезМин. / макс. в столбце даты, возвращающий тот же результат.Возможно рабочие дни против выходных вызывают проблемы?При вычитании за соседние дни это должно считаться понедельником и пятницей как смежные дни.