TypeError:无法在DatetimeIndex上使用str类型的索引器[stuff]进行位置索引



我已经对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行和它之前的所有costmargin加起来,然后是第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)

但是,我们可以简单地通过在costmargin列上使用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

最新更新