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

Pandas分组条件筛选:选取每组Name列首次出现1后的所有行

Pandas分组筛选:保留每个分组中Name列首次出现1后的所有行

需求说明

对Pandas DataFrame按Group列分组,为每个分组保留Name列首次出现值1之后的所有行(包含首次出现1的那一行)。

待处理DataFrame

GroupNameValue
A010
A020
A130
A040
A150
B060
B170
B080

预期结果

GroupNameValue
A130
A040
A150
B170
B080

解决方案

使用groupby结合累积最大值函数cummax()即可实现需求,代码如下:

import pandas as pd

# 构造与示例一致的DataFrame
df = pd.DataFrame({
    'Group': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B'],
    'Name': [0, 0, 1, 0, 1, 0, 1, 0],
    'Value': [10, 20, 30, 40, 50, 60, 70, 80]
})

# 分组筛选逻辑
result = df.groupby('Group').apply(
    lambda g: g[g['Name'].cummax() == 1]
).reset_index(drop=True)

print(result)

代码解释

  • groupby('Group'):按分组列对DataFrame拆分
  • g['Name'].cummax():对每个分组的Name列计算累积最大值,首次出现1后,后续所有行的累积最大值都会保持为1
  • g[g['Name'].cummax() == 1]:筛选出累积最大值为1的行,即首次出现1之后的所有行(含首次出现1的行)
  • reset_index(drop=True):重置结果的索引,消除分组带来的多级索引问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:13:36