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

pandas如何计算DataFrame列含当前行在内的连续3个值之和

问题说明

现有如下结构的Pandas DataFrame:

Datetime     Data      Fn
0   18747.385417  11275.0       0
1   18747.388889   8872.0       1
2   18747.392361   7050.0       0
3   18747.395833   8240.0       1
4   18747.399306   5158.0       1
5   18747.402778   3926.0       0
6   18747.406250   4043.0       0
7   18747.409722   2752.0       1
8   18747.420139   3502.0       1
9   18747.423611   4026.0       1

需求:对Fn列的每个元素,计算包含当前元素在内的连续3个值的总和,结果存入新增的Sum列,预期输出如下:

Datetime     Data      Fn     Sum
0   18747.385417  11275.0       0       0
1   18747.388889   8872.0       1       0
2   18747.392361   7050.0       0       1
3   18747.395833   8240.0       1       2
4   18747.399306   5158.0       1       2 
5   18747.402778   3926.0       0       2
6   18747.406250   4043.0       0       1
7   18747.409722   2752.0       1       1
8   18747.420139   3502.0       1       2
9   18747.423611   4026.0       1       3
实现方案

直接使用Pandas内置的滑动窗口方法rolling实现,核心计算逻辑仅需1行:

import pandas as pd

# 核心计算逻辑
df['Sum'] = df['Fn'].rolling(window=3, min_periods=3).sum().fillna(0).astype(int)

参数说明

  • window=3:指定滑动窗口长度为3,每个窗口覆盖当前行及向前相邻的共3行数据
  • min_periods=3:要求窗口内必须有3个有效值才触发求和计算,不足3个的位置返回空值,对应DataFrame前2行的位置
  • .fillna(0):将前2行不足窗口长度产生的空值替换为0,匹配预期输出规则
  • .astype(int):将求和结果转为整数类型,避免输出浮点数

运行上述代码后得到的结果和预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:34:02