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

基于groupby信息使用transform过滤DataFrame的问题

问题原因及解决办法

你的代码没生效的核心原因是:groupby(['id']).transform('size')返回的是和原DataFrame同结构的DataFrame(列名仍为id),而原数据包含id和info两列。用这个布尔DataFrame去索引原数据时,Pandas会按列名匹配,导致只有id列参与过滤,最终结果不符合预期。

举个实际的例子:运行data.groupby(['id']).transform('size')会得到一个仅含id列的DataFrame,每个值对应对应id的出现次数。当你用==3生成布尔DataFrame后,原DataFrame的info列没有对应的布尔值匹配,索引逻辑自然出错。

正确写法有两种:

  1. 针对id列单独做transform,得到Series来索引:
data[data.groupby(['id'])['id'].transform('size') == 3]

或者更简洁的写法:

data[data['id'].groupby(data['id']).transform('size') == 3]
  1. 用groupby的filter方法,逻辑更直观:
data.groupby('id').filter(lambda x: len(x) == 3)

这两种写法都能正确筛选出所有出现次数为3次的id对应的行,最终结果会保留id为0、1、3的全部数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:50:43