У меня есть следующий фрейм данных (df
)
AmountNeeded AmountAvailable
Source Target
1 2 290.0 600.0
4 300.0 600.0
6 200.0 600.0
3 2 290.0 450.0
5 100.0 450.0
7 8 0.0 500.0
Я хотел бы вычислить оставшуюся доступность для каждого источника :
AmountNeeded AmountAvailable RemainingAvailability
Source Target
1 2 290.0 600.0 600
4 300.0 600.0 310
6 200.0 600.0 10
3 2 290.0 450.0 450
5 100.0 450.0 160
7 8 0.0 500.0 500
Итак, если Source
появляется более одного раза, мне нужно вычесть сумму запаздывающих значений AmountNeeded
для этого конкретного Source
.
Если мы возьмем Source 1
и Target 4
, оставшаяся сумма должна быть AmountAvailable-AmountNeeded(previous_row) = 600 - 290 = 310
Если мы перейдем к Source 1
и Target 6
, это будет: 600 - (290+300) = 10
.
Это также будет вычислено как RemainingAvailability - AmountNeeded = 310 - 300 = 10
Я пытался использовать разные комбинации groupby и diff, но без особого успеха.