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

如何从pandas DataFrame中筛选每个steps序列最大值对应的行

Pandas 保留每组连续递增序列最大值行的实现方案

核心思路

通过识别每组序列的起始标记(steps值为1)生成分组ID,按ID分组后筛选每组steps最大值对应的行即可。

完整实现代码

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame([(234, 1), (234, 1), (234, 2), (234, 3), (234, 4), (234, 1), (234, 2),
                   (234, 3), (234, 1), (234, 2)], columns=['Energies', 'steps'])

# 生成分组标识:每次遇到steps=1则开启新分组
group_ids = (df['steps'] == 1).cumsum()

# 按分组筛选每组steps最大值对应的行
result = df.loc[df.groupby(group_ids)['steps'].idxmax()]

结果验证

运行后得到的result索引为[0,4,7,9],完全符合需求,输出内容如下:

Energies  steps
0       234      1
4       234      4
7       234      3
9       234      2

逻辑说明

  • df['steps'] == 1生成布尔序列,所有新组的起始位置标记为True
  • 调用cumsum()对布尔值累加,同一组的行会得到相同的数值作为分组ID
  • 按分组ID分组后,idxmax()会返回每组steps最大值对应的行索引
  • 最后通过loc筛选出对应行即可,无需生成额外的临时列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:36:04