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

pandas如何按列分组后根据分组数值筛选dataframe数据

pandas 按分组条件筛选全量行实现方法

你可以用以下两种常用方案实现需求:


方案1:groupby + transform 一步过滤

对每个id分组判断是否存在大于3的value值,生成布尔掩码后直接筛选原数据:

import pandas as pd

# 示例数据构造,你可以替换成自己的df
df = pd.DataFrame({
    'id': ['a1','a1','a1','a1','a2','a2','a3','a3','a3','a3','a3','a3'],
    'value': [0,1,2,3,0,1,0,1,2,3,4,5]
})

# 核心筛选代码
res = df[df.groupby('id')['value'].transform(lambda x: (x>3).any())]

方案2:先拿合法ID再匹配(大数据量更推荐)

先提取所有符合条件的id列表,再用isin匹配原数据的行,性能比方案1更高:

# 筛选出分组内value最大值大于3的id
valid_ids = df.groupby('id')['value'].max().loc[lambda x: x>3].index
# 过滤原数据
res = df[df['id'].isin(valid_ids)]

两种方案输出的结果都和你预期的一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:48:05