Вот небольшая попытка:
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])