我一直在努力寻找如何计算储蓄账户的未来价值的方法,每个月我必须在其中存入$ 100。
import pandas as pd
# deposit an extra $100 per month
deposit = [100] * 4
# unbelievable rate of 10%!
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()
这会导致错误的总计440美元,由于复利应为464.10美元。
total = 0
r = 0.1
d = 100
for i in range(0,4):
total = (total * r) + total + d
print (total)
100.0
210.0
331.0
464.1
在Pandas中执行此操作的正确方法是什么?
答案 0 :(得分:3)
IIUC,最后复合。使用pd.Series
的{{1}}和shift
:
cumprod
输出:
df['total'] = (df['deposit'] * df['rate'].shift().add(1).cumprod().fillna(1)).cumsum()
print(df)