У меня есть набор данных, в котором я хотел бы суммировать несколько столбцов, а затем создать несколько столбцов с промежуточным итогом. Вывод должен быть сгруппирован по идентификатору и дате.
Данные
id date t1 t2 total start curr_t2 curr_t2
a q1 22 4 1 5 50 25 20
a q2 22 1 1 2 50 25 20
a q3 22 0 0 0 50 25 20
b q1 22 5 5 10 100 30 40
b q2 22 2 2 4 100 30 70
b q3 22 3 4 7 100 30 70
Желаемый
id date t1 t2 total start cur_t1 cur_t2 final finalt1 finalt2
a q1 22 4 1 5 50 25 20 55 29 21
a q2 22 1 1 2 50 25 20 57 30 22
a q3 22 0 0 0 50 25 20 57 30 22
b q1 22 5 5 10 100 30 40 110 35 27
b q2 22 2 2 4 100 30 70 114 37 29
b q3 22 3 4 7 100 30 70 121 40 33
**Logic:**
sum the 'start' and 'total' column to create the 'final' column
however, final column is a running total, adding to the 'total' column.
EX.
start = 50 total = 5 so final = 55
then
the next row we have a total of 2 , so the final for the next row is 57
Similar logic with the newly created: finalt1 and finalt2
и т.д.
Выполняется
Думаю, мне нужно использовать функцию .cumsum для получения желаемого результата Вывод должен быть сгруппирован по идентификатору и дате
out['final'] = out['final'].sub(out.groupby('id')['start'].cumsum())
Однако эти выходные данные не группируются по модулям и дате. Я все еще изучаю, любые предложения приветствуются.
можешь объяснить логику расчетов?
обязательно обновлю пост