Проблема:
Что мне нравится делать, это шаг за шагом уменьшить значение в Series
с помощью непрерывно уменьшающейся базовой фигуры.
Я не уверен в терминологии для этого - я думал, что могу что-то сделать с cumsum
и diff
, но я думаю, что веду себя на дикой охоте на гусей...
Начальный код:
import pandas as pd
ALLOWANCE = 100
values = pd.Series([85, 10, 25, 30])
Желаемый вывод:
desired = pd.Series([0, 0, 20, 30])
Обоснование:
Начиная с базы ALLOWANCE
- каждое значение в Series
уменьшается на оставшуюся сумму, как и само по себе, поэтому выполняются следующие шаги:
- Начните с 100, мы можем полностью удалить
85
, чтобы он стал0
, теперь15
осталось какALLOWANCE
- Следующее значение
10
, и у нас все еще есть15
, поэтому он снова становится0
, и мы имеем5
left. - Следующее значение
25
- осталось только5
слева, поэтому это становится20
, и теперь мы не имеем никакого дополнительного разрешения. - Следующее значение
30
, а так как нет разрешения, значение остается равным30
.