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

如何使用Pandas删除分类出现次数不足50的行?

解决DataFrame筛选代表性足够分类行的问题

嘿,我来帮你搞定这个筛选问题!你的循环写法出错了——每次循环都会把h重新赋值为排除当前分类的结果,最后得到的只会是排除最后一个分类后的数据集,完全和你想要的“保留符合条件分类”相反。

最简单的解决方案:直接用isin匹配符合条件的分类

你已经通过uu得到了出现次数≥50的分类索引,直接用这个索引来筛选原DataFrame就行,一行代码搞定:

# 保留classif属于uu索引的所有行
filtered_df = df[df['classif'].isin(uu.index)]

更简洁的一步到位写法:用groupby.filter

如果你不想先计算time和uu,可以直接通过分组过滤实现,一步完成统计和筛选:

# 直接筛选出分组行数≥50的所有行
filtered_df = df.groupby('classif').filter(lambda x: len(x) >= 50)

为什么你的循环不行?

你写的循环逻辑是反的:

for enough in uu.index.tolist():
    h=df.loc[df.classif != enough]

每次循环都会把h设置为排除当前enough分类的DataFrame,而不是保留它。而且每次循环都会覆盖h,最后h只会是排除最后一个enough分类的结果,完全不符合你的需求。

⚠️ 小提醒:注意你例子里的大小写问题(比如Cat和cat),如果实际数据中分类名大小写不一致,isin会匹配失败,记得先统一大小写或者确认数据中的分类名格式一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:35:58