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

Python中如何对DataFrame每行连续4值滚动求和(含空值处理)

实现DataFrame每行连续4个值的滚动求和(含空值判断)

问题说明

原始DataFrame如下:

A      B     C     D      E     F   G
     1      2    3     4      4     5   5
    100   100   Na    100   100    10  5

需要生成新的DataFrame,计算每行连续4个值的滚动求和:

  • 第一行:1+2+3+4对应D列结果,2+3+4+4对应E列结果,3+4+4+5对应F列结果,4+4+5+5对应G列结果
  • 计算过程中只要包含空值,结果就为空值
  • 期望输出:
D     E     F      G
       10    13    16     18  
       Na    Na    Na     215

解决方案

使用Pandas的rolling方法按行处理,结合min_periods参数实现空值判断,代码如下:

import pandas as pd
import numpy as np

# 构造原始DataFrame
df = pd.DataFrame({
    'A': [1, 100],
    'B': [2, 100],
    'C': [3, np.nan],
    'D': [4, 100],
    'E': [4, 100],
    'F': [5, 10],
    'G': [5, 5]
})

# 按行执行窗口为4的滚动求和,要求窗口内4个值全非空才计算
rolling_result = df.rolling(window=4, axis=1, min_periods=4).sum()

# 截取从D列开始的结果,匹配期望输出的列范围
final_df = rolling_result.loc[:, 'D':]

print(final_df)

代码解释

  • rolling(window=4, axis=1):设置滚动窗口大小为4,指定按行(axis=1)进行滚动计算
  • min_periods=4:强制要求窗口内必须有4个非空值才执行求和,否则返回NaN,满足空值判断要求
  • loc[:, 'D':]:因为前3列(A、B、C)无法凑齐4个连续值,所以截取从D列开始的结果,与期望输出的列对齐

运行代码后输出结果与期望一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:28:24