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

如何用Pandas实现带偏移和条件的最大值定位?

使用Pandas实现窗口最大值中心匹配需求

首先可以通过Pandas的窗口滚动功能直接实现需求,步骤如下:

  1. 还原示例DataFrame
import pandas as pd

df = pd.DataFrame({'A': [3,2,5,4,1,2,7,3,1]})
  1. 计算中心对齐的5元素窗口最大值
    用rolling创建大小为5、中心对齐的窗口,这样每个索引对应的窗口会以自身为中心展开(边缘索引的窗口元素不足5个时会返回NaN),再计算窗口内的最大值:
window_max = df['A'].rolling(window=5, center=True).max()
  1. 生成目标Res列
    对比原A列和窗口最大值列,当两者相等时保留A的数值,否则填充0:
df['Res'] = df['A'].where(df['A'] == window_max, 0)

执行后得到的结果完全符合预期:

A  Res
0  3    0
1  2    0
2  5    5
3  4    0
4  1    0
5  2    0
6  7    7
7  3    0
8  1    0

关键说明

  • center=True是核心参数,确保窗口以当前索引为中心,精准匹配"最大值位于5个数据中心位置"的要求。
  • 边缘索引的窗口元素不足5个,rolling.max()会返回NaN,此时where方法自动将这些位置的Res设为0,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:02:33