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

Pandas如何计算DataFrame指定列最近14个值的和新增列

问题根因

原代码无法实现预期效果的核心原因:

  • a.iloc[-14:,col].sum()仅会选取DataFrame全局最后14行的atr1列计算总和,返回单个固定标量值
  • 将单个标量赋值给DataFrame新列时,Pandas会自动将该值广播到所有行,因此整列结果完全一致,不存在逐行计算的逻辑
正确实现方案

使用Pandas原生的rolling滚动窗口API实现逐行滚动求和,默认窗口规则为「包含当前行在内,向前取指定数量的样本计算」,完全匹配需求。

代码示例

  1. 严格窗口模式(默认):必须凑够14个有效值才输出计算结果,前13行atrsum值为NaN
a['atrsum'] = a['atr1'].rolling(window=14).sum()
  1. 自适应窗口模式:不足14个值时,按当前行及之前实际存在的有效值数量求和(例如第2行仅累计前2个atr1值)
a['atrsum'] = a['atr1'].rolling(window=14, min_periods=1).sum()

不需要额外通过columns.get_loc获取列索引,直接按列名选取atr1列做滚动计算即可,代码更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 05:18:25