如何让DataFrame中profit列的计算结果从第二行开始而非第一行?
解决方案
核心思路:把原代码里的
shift(-1)换成shift(1),让每一行的profit等于上一行的value + 当前行的value,这样计算结果会从第二行开始生成,最后一行的结果也能正确计算。修正后的基础代码:
xf['profit'] = xf.value.shift(1) + xf.value
此时第一行的profit会是NaN(因为没有上一行数据),如果需要把第一行填充为0,可使用:
xf['profit'] = (xf.value.shift(1) + xf.value).fillna(0)
- 原理说明:
- 原代码里的
xf.value.shift(-1)是取下一行的value和当前行相加,导致第一行存的是第1+2行的结果,最后一行只能加0,和需求不符。 - 换成
shift(1)后,是取上一行的value和当前行相加,第二行自然存第1+2行的结果,最后一行则存倒数第二行+最后一行的结果,完全匹配你的要求。
- 原代码里的
内容的提问来源于stack exchange,提问作者Suliman Zunni
相关产品推荐
相关产品推荐

