Python 熊猫当前行*上一行+;前一行
指数(pd):Python 熊猫当前行*上一行+;前一行,python,pandas,Python,Pandas,指数(pd): tradedate | percent | day_index ------ | ------| ------ 2015-06-02 | 0 | 1000 2015-06-03 | 0.5 | 0 2015-06-04 | 0.6 | 0 ..... 想要的结果: tradedate | percent | day_index ------ | ------| ------ 2015-06-02 |
tradedate | percent | day_index
------ | ------| ------
2015-06-02 | 0 | 1000
2015-06-03 | 0.5 | 0
2015-06-04 | 0.6 | 0
.....
想要的结果:
tradedate | percent | day_index
------ | ------| ------
2015-06-02 | 0 | 1000
2015-06-03 | 0.5 | 1500 = 1000 + 1000 * 0.5
2015-06-04 | 0.6 | 2400 = 1500 + 1500 * 0.6
.....
我试着
index_pd['day_index'] =index_pd['day_index'].shift(1) * index_pd['percent'].shift(0) + index_pd['day_index'].shift(1)
但它影响到第二排。
索引中有上千行,如何批量替换,感谢不是很好的解决方案,因为循环方式:
在计算的每一行中,前一天的
指数
值乘以(1+指数百分比)
。因此,您可以使用(1+指数百分比)
的累积乘积,并将其乘以日指数的第一个值,以获得结果:
index_pd['day_index'] = (index_pd.percent+1).cumprod()*index_pd.day_index.iat[0]
如果要保留第二行的原始值,则需要写入其他列。如何进行批计算?批是什么意思?我的原始答案甚至不正确,您应该将结果写入日索引,并使用结果计算下一步。@t水用于获取日前索引并保存当前结果吗?
index_pd['day_index'] = (index_pd.percent+1).cumprod()*index_pd.day_index.iat[0]