[英]Python/Pandas - Cumulative Sum with Interest
试图对熊猫做一些预测。 我有一个按月支付的收入时间表,想做一个总数的累计和,我可以很轻松地用.cumsum()
来做。 但是,我想添加一个5%pa的兴趣/增长因子。
df示例:
Month Payment
2018-01 1000
2018-02 2000
2018-03 500
2018-04 1000
2018-05 0
2018-06 0
我想输出:
Month Payment CumSum with Growth
2018-01 1000 1000
2018-02 2000 3005 (previous cumsum) * growth + 2000
2018-03 500 3510 (previous cumsum) * growth + 500
2018-04 1000 4510 (previous cumsum) * growth + 1000
2018-05 0 4515
2018-06 0 4520
快速尝试:
def interest(data, rate):
#turn yearly to monthly rate
monthly = rate/12.0
#hole output
out = np.zeros_like(data, dtype = float)
#initial deposit
out[0] = data[0]
for i in range(1, len(data)):
#t+1 = t*(1+monthly) + deposit
out[i] = out[i - 1]*(1+monthly)+ data[i]
return out
它应该按预期工作:
x = pd.DataFrame({'amount':[1000,2000,500, 1000,0,0]})
interest(x.amount, 0.05)
array([1000. , 3004.16666667, 3516.68402778, 4531.33687789,
4550.21744822, 4569.17668759])
假设增长常数:
growth = 0.05/12
df['aux'] = df['Payment']*(1+growth)
df.loc[0,'aux'] = df.loc[0,'Payment']
df['cumsum'] = df['aux'].cumsum()
df = df.drop('aux', axis = 1)
输出量
Month Payment cumsum
0 2018-01 1000 1000.000000
1 2018-02 2000 3008.333333
2 2018-03 500 3510.416667
3 2018-04 1000 4514.583333
4 2018-05 0 4514.583333
5 2018-06 0 4514.583333
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.