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

如何在Python的Pandas Series中按固定分段提取最大值?

解决Pandas Series按每n个元素分组取最大值并保留顺序的问题

nlargest确实不适合你的场景——它是从整个Series里提取前n个最大值并降序排列,和你需要的按固定窗口分组取每组最大值、保留组顺序的需求不匹配。

正确实现方式

核心思路是先给Series的元素按每n个一组分配分组标识,再按分组取最大值,这样就能保留原分组的顺序。

代码示例

假设你有如下Series:

import pandas as pd
import numpy as np

s = pd.Series([2, 1, 3, 5, 3, 6, 1, 6, 9])
n = 3

生成分组标识,每n个元素为一组:

groups = np.arange(len(s)) // n

然后分组取最大值:

result = s.groupby(groups).max()

执行后result的结果就是:

0    3
1    6
2    9
dtype: int64

如果不需要保留分组索引,也可以用reset_index(drop=True)去掉:

result = s.groupby(groups).max().reset_index(drop=True)

原理说明

  • np.arange(len(s)) // n会生成一个和Series长度相同的数组,比如n=3时,数组是[0,0,0,1,1,1,2,2,2],对应每3个元素一组的分组标记。
  • groupby(groups)会按标记把元素分成对应的组,再调用max()就能得到每组的最大值,且分组顺序和原Series的分组顺序一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:40:26