我有下面的代码。如果保证金始终大于0,则它可以正常工作。然而,如果它在几个月内为0,那么pandas算法就会中断。它不会返回正确的值。
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()结果如下所示
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个月累积的利息增加。
发布于 2021-06-17 21:50:09
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]https://stackoverflow.com/questions/68019521
复制相似问题