Pandas dataframe:使用第 x 行中函数的输出作为第 x+1 行中相同函数的输入

Pandas dataframe: using the output of a function in row x as input for the same function in row x+1

我有一个如下所示的数据框

SIM              Sim_1       Sim_2                                
2015          100.0000    100.0000
2016          2.504613    0.123291   
2017          3.802958   -0.919886       
2018          4.513224   -1.976056      
2019         -0.775783    3.914312      

下面的函数

df = sims.shift(1, axis = 0)*(1+sims/100)

returns 一个看起来像这样的数据框

SIMULATION       Sim_1       Sim_2         
2015         NaN          NaN         
2016        102.504613  100.123291     
2017          2.599862    0.122157      
2018          3.974594   -0.901709    

2016年的值正是应该计算的值。但是2017年的值应该将2016年公式的输出(102.504613和100.123291)作为2017年计算的输入。这里公式取原始值(2.599862和0.122157) 在 pyhton 中有 运行 的简单方法吗?

只是粗略的实现方式:

for i in range(len(df2)):
  try:
    df2['Sim1'][i] = float(df2['Sim1'][i]) + float(df2['Sim1'][i-1])
    df2['Sim2'][i] = float(df2['Sim2'][i]) + float(df2['Sim2'][i-1])
  except:
    pass

可能有更好的优化方法。

您正试图显示给定后续 return 的 100 的增长。你的问题是初始100不在同一个space中。如果您将其替换为零 (0% return) 然后执行 cumprod,您的问题就解决了。

sims.iloc[0] = 0
sims.div(100).add(1).cumprod().mul(100)