You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas使用iloc索引DatetimeIndex报TypeError及累计求和问题

报错原因
  • 你代码中d.iloc[1:'stuff']里的stuff被加了单引号,变成了字符串类型的常量,而iloc是基于整数位置的索引器,只能接收整数/整数列表/整数切片等参数,传入字符串直接触发类型错误。
  • 你的实现思路不合理:用嵌套循环实现累计求和的效率极低,对于行数较多的DataFrame会非常慢,pandas已经提供了内置的向量化累计求和函数,不需要手动写循环。
正确实现方案

直接调用pandas内置的cumsum()方法即可,该方法会自动对每一列单独计算累计和,每一行的结果等于当前行值与之前所有行值的总和,完全匹配你的需求,代码如下:

# 对cost、margin两列计算累计求和,结果保存在新的DataFrame中
d_cumsum = d[['cost', 'margin']].cumsum()

如果你需要把累计求和的结果作为新列追加到原DataFrame中,可以这么写:

d[['cost_cumsum', 'margin_cumsum']] = d[['cost', 'margin']].cumsum()
原有循环的修正方案(不推荐使用,仅作错误演示)

如果一定要修正你原本的循环代码(性能远差于内置方法,不建议生产环境使用),只需要去掉stuff两边的单引号即可,但你原本的循环逻辑也无法得到正确的累计和结果,仅能修复报错:

for stuff in range(len(d)):
    for data in d.iloc[1:stuff]:
        print(data)

内容的提问来源于stack exchange,提问作者Slartibartfast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:36:00