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

Pandas计算多列滚动n行区间内全局最大差值实现方法

实现方案

你可以通过pandas内置的滚动统计函数实现需求,相比自定义apply计算效率更高,代码如下:

import pandas as pd

# 定义滚动窗口大小
n = 10
# 筛选所有数值类型的列,自动排除时间等非数值字段
num_cols = df.select_dtypes(include='number').columns

# 计算每个滚动窗口内所有数值的全局最大值,min_periods保证窗口数据足量才计算
roll_global_max = df[num_cols].rolling(window=n, min_periods=n).max().max(axis=1)
# 计算每个滚动窗口内所有数值的全局最小值
roll_global_min = df[num_cols].rolling(window=n, min_periods=n).min().min(axis=1)

# 差值写入新列
df['Diff'] = roll_global_max - roll_global_min

逻辑说明

  • 先对每列单独做滚动窗口取最大值,再对每行的多列最大值取最大值,得到当前窗口所有数值的全局最大值
  • 同理计算当前窗口所有数值的全局最小值,二者相减即为需要的差值
  • 前n行因窗口数据不足/存在缺失值,会自动填充为NaN,和你给出的预期输出完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:36:07