我已经对df:
进行了排序d
cost margin
Date
2018-12-28 -0.000351 0.006714
2021-04-27 -0.000618 0.011988
2021-07-06 -0.000806 0.006352
2021-02-02 -0.000825 0.017305
2018-11-28 -0.000831 0.004580
2021-05-18 -0.001560 0.004649
2019-04-15 -0.001607 0.003223
2019-02-21 -0.002103 0.006027
2019-08-09 -0.002264 0.008437
我想要做的是,将第1行和它之前的所有cost
和margin
加起来,然后是第2,1行,然后是第3,2,1行。所以把每一行和它之前的所有相加,直到最后。要做到这一点,我需要这样做:
for stuff in range(len(d)):
for data in d.iloc[1:'stuff']:
print(data)
但是我甚至不能在这里得到迭代的数据,并且得到这个错误:
TypeError:不能在DatetimeIndex上做位置索引str
类型的索引器[stuff]
你能告诉我如何解决这个问题吗?
删除stuff
周围的引号允许您的代码运行:
for stuff in range(len(d)):
for data in d.iloc[1:stuff]:
print(data)
但是,我们可以简单地通过在cost
和margin
列上使用cumsum()
方法来达到您的目标,如下所示:
>>> d[['cost_sum', 'margin_sum']] = d[['cost', 'margin']].cumsum()
>>> d
Date cost margin cost_sum margin_sum
0 2018-12-28 -0.000351 0.006714 -0.000351 0.006714
1 2021-04-27 -0.000618 0.011988 -0.000969 0.018702
2 2021-07-06 -0.000806 0.006352 -0.001775 0.025054
3 2021-02-02 -0.000825 0.017305 -0.002600 0.042359
4 2018-11-28 -0.000831 0.004580 -0.003431 0.046939
5 2021-05-18 -0.001560 0.004649 -0.004991 0.051588
6 2019-04-15 -0.001607 0.003223 -0.006598 0.054811
7 2019-02-21 -0.002103 0.006027 -0.008701 0.060838
8 2019-08-09 -0.002264 0.008437 -0.010965 0.069275