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)
我有一个如下所示的数据框
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)