У меня есть фрейм данных с 3 столбцами, в которых первый столбец - это категориальная переменная с именем человека, второй столбец - это дата, а третий столбец - совокупные вхождения проблемы. Я хотел бы создать новый столбец с вхождениями по дням на человека.
**Name Date Cumulative**
John 01-01-2020 0
John 02-01-2020 5
John 03-01-2020 10
John 04-01-2020 12
Peter 01-01-2020 0
Peter 02-01-2020 3
Peter 03-01-2020 7
Peter 04-01-2020 10
James 01-01-2020 0
James 02-01-2020 10
James 03-01-2020 14
James 04-01-2020 18
Kirk 01-01-2020 0
Kirk 02-01-2020 12
Kirk 03-01-2020 12
Kirk 04-01-2020 15
Rob 01-01-2020 0
Rob 02-01-2020 11
Rob 03-01-2020 18
Rob 04-01-2020 23
Если я использую df ['By Day'] = df.Cumulative.diff (), результат будет хорошим, но в при первом появлении каждого человека он даст мне отрицательное число вместо 0 (потому что оно вычитает предыдущее число до 0). Это дало бы мне следующее:
Name Date Cumulative By Day
John 01-01-2020 0 0
John 01-02-2020 0 0
John 03-01-2020 5 5
John 04-01-2020 10 5
John 05-01-2020 12 2
Peter 01-01-2020 0 -12
Peter 02-01-2020 0 0
Peter 03-01-2020 3 3
Peter 04-01-2020 7 4
Peter 04-01-2020 10 3
James 01-01-2020 0 -10
James 02-01-2020 0 0
James 03-01-2020 10 10
James 04-01-2020 14 4
James 04-01-2020 18 4
Kirk 01-01-2020 0 -18
Kirk 02-01-2020 0 0
Kirk 03-01-2020 12 12
Kirk 04-01-2020 15 3
Kirk 04-01-2020 19 4
Rob 01-01-2020 5 -14
Rob 02-01-2020 11 6
Rob 03-01-2020 18 7
Rob 04-01-2020 23 5
Rob 04-01-2020 27 4
Я хотел бы сделать различие по каждому имени, чтобы оно начиналось с 0 каждый раз, когда человек не тот. Я думал об использовании итерации по имени, но она будет делать это 5 раз для каждой записи. Например, для Роба я бы хотел 0 6 7 5 4 вместо -14 (предыдущие 19 из Кирка -5 из первой записи Роба)