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

如何在Python中不新增列,基于groupby条件筛选DataFrame子集

筛选组内唯一Agent数量超2的行

数据结构

原始DataFrame结构如下:

date|point|agent
2023-10-02|A|agent1 
2023-10-02|A|agent2 
2023-10-05|B|agent3 
2023-10-05|B|agent2 
2023-10-02|C|agent1 
2023-10-02|C|agent2 
2023-10-02|C|agent3 

需求

筛选出每个(date, point)组内唯一agent数量超过2的所有行,要求无需新增冗余列。

可行解决方案

方法1:使用groupby().filter()

这是最直接高效的方式,直接对分组进行过滤,无需额外列:

filtered_df = df.groupby(['date', 'point']).filter(lambda x: x['agent'].nunique() > 2)

filter方法会保留所有满足条件的分组中的行,完全匹配需求。

方法2:transform结合布尔索引(不存储中间列)

如果偏好更直观的布尔索引方式,可以直接用transform生成临时布尔序列进行筛选,不会在原DataFrame中新增冗余列:

mask = df.groupby(['date', 'point'])['agent'].transform('nunique') > 2
filtered_df = df[mask]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:02:32