df_have
CONTRACT ID AMT REL_NUM HDR_NUM
1 1 0.00 0 1
1 2 33.85 1 2
1 3 0.72 2 2
1 4 0.87 1 1
1 5 1.67 1 2
df_want
CONTRACT ID AMT REL_NUM HDR_NUM CALCULATION
1 1 0.00 0 1 (0.00+33.85+0.87+1.67)
1 2 33.85 1 2 (33.85+0.72)
1 3 0.72 2 2 (33.85+0.72)
1 4 0.87 1 1 (0.00+33.85+0.87+1.67)
1 5 1.67 1 2 (33.85+0.72)
df_getting
CONTRACT ID AMT REL_NUM HDR_NUM CALCULATION
1 1 0.00 0 1 21.75
1 2 33.85 1 2 2.00
1 3 0.72 2 2 19.75
1 4 0.87 1 1 33.85
1 5 1.67 1 2 0.00
Попытка создать новый столбец 'CALCULATION', но логика немного сложная.Вычисление должно быть SUM поля AMT, зависящего от полей CONTRACT, ID, REL_NUM и HDR_NUM.
Шаг 1- Проверьте поле HDR_NUM и получите соответствующее значение AMT, где ID = HDR_NUM И поле CONTRACTтот же
Шаг 2 - Добавьте во все поля AMT, где REL_NUM = HDR_NUM для того же КОНТРАКТА
Для первой строки, это будет суммирование полей AMT для ID = 2,3 и4 для КОНТРАКТА = 1.Для строки 6 это будет суммирование полей AMT для ID = 2,4 для CONTRACT = 2
Одно предостережение: двойного счета не должно быть (т.е. для строки 6 суммируйте поля AMT для ID = 2, 4 для КОНТРАКТА = 2, не удваивайте счет ID = 2)