问题:
我想做的是一步一步地将Series
中的一个值通过一个不断减少的基数逐步减少。在
我不确定这个术语是什么-我想我可以用cumsum
和{
起始代码:
import pandas as pd
ALLOWANCE = 100
values = pd.Series([85, 10, 25, 30])
期望输出:
^{pr2}$理由:
从ALLOWANCE
开始,Series
中的每个值都将减去剩余的量,这也是津贴本身,因此将执行以下步骤:
85
,所以它变成{10
,我们仍然有15
可用,所以这又变成了0
,剩下{25
-我们只剩下5
,所以这变成了20
,现在我们没有更多的余量了。在30
,由于没有余量,该值保持为30
。在
这可能不是很有效,但目前这是熊猫使用^{} 完成此操作的方法:
或者更简单地说:
^{pr2}$按照你最初的想法
cumsum
和diff
,你可以写下:这是
values
减去允许值的累计和。负值被裁剪为零(因为我们不在乎数字,直到我们透支了津贴)。从那里,你可以计算出差额。在但是,如果第一个值可能大于允许值,则首选以下两行变化:
^{pr2}$这将用“first value-allows”值填充第一个
NaN
值。因此,在ALLOWANCE
被降低到75的情况下,它将desired
作为Series([10, 10, 25, 30])
返回。在你对}的逆函数)。在
cumsum
和diff
的想法奏效了。它看起来不太复杂;不确定是否有更短的解决方案。首先,我们计算累计和,然后进行运算,然后返回(diff
有点像{相关问题 更多 >
编程相关推荐