继你最初的想法
cumsum和
diff,你可以写:
>>> (values.cumsum() - ALLOWANCE).clip_lower(0).diff().fillna(0)0 01 02 203 30dtype: float64
这是
values减去津贴的累计总和。负值会被裁剪为零(因为我们在计算透支额之前才关心数字)。从那里,您可以计算出差异。
但是,如果第一个值可能大于容差,则首选以下两行变化:
s = (values.cumsum() - ALLOWANCE).clip_lower(0)desired = s.diff().fillna(s)
这将
NaN用“第一值-余量”值填充第一值。因此,在其中的情况下
ALLOWANCE被降低到75时,它返回
desired作为
Series([10,10, 25, 30])。



