首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算累计复利

计算累计复利
EN

Stack Overflow用户
提问于 2021-06-17 20:37:29
回答 1查看 60关注 0票数 1

我有下面的代码。如果保证金始终大于0,则它可以正常工作。然而,如果它在几个月内为0,那么pandas算法就会中断。它不会返回正确的值。

代码语言:javascript
复制
import pandas as pd


deposit = [100] * 4
rate = [0.1] * 4

df = pd.DataFrame({ 'deposit':deposit, 'rate':rate})
df['interest'] = df.deposit * df.rate
df['total'] = df.deposit.cumsum() + df.interest.cumsum()
df.loc[2:, ['deposit']] = 0
df['total'] = (df['deposit'] * df['rate'].shift().add(1).cumprod().fillna(1)).cumsum()

结果如下所示

代码语言:javascript
复制
    deposit rate    interest    total
0   100     0.1     10.0        100.0
1   100     0.1     10.0        210.0
2   0       0.1     10.0        210.0
3   0       0.1     10.0        210.0

对于第2个月和第3个月,金额应按前几个月在第1个月累积的利息增加。

EN

回答 1

Stack Overflow用户

发布于 2021-06-17 21:50:09

代码语言:javascript
复制
import pandas as pd

init_deposit = 100
init_rate = 0.1
deposit = [init_deposit] * 8
rate = [init_rate] * 8

df = pd.DataFrame({ 'deposit':deposit, 'rate':rate})
df.loc[2:4, ['deposit']] = 0
df['interest'] =0
df['total'] =0
df['total'].iloc[0] = init_deposit
for i in range(1, len(df)):
    df['interest'].iloc[i] = df['total'].iloc[i-1] * df['rate'].iloc[i]
    df['total'].iloc[i] = df['interest'].iloc[i] + df['total'].iloc[i-1] + df['deposit'].iloc[i]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68019521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档