Проблема:
Что мне нравится делать, это шаг за шагом уменьшить значение в 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, и мы имеем5left. - Следующее значение
25- осталось только5слева, поэтому это становится20, и теперь мы не имеем никакого дополнительного разрешения. - Следующее значение
30, а так как нет разрешения, значение остается равным30.