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

如何移除Pandas DataFrame中指定列唯一值计数小于阈值的行?

移除DataFrame中特定列唯一值出现次数低于阈值的行

直接上实操方法,假设你的DataFrame叫df,要处理的列是'reason',阈值设为5:

方法一:分步处理(清晰直观)

  1. 先统计目标列每个值的出现次数:
    reason_counts = df['reason'].value_counts()
    
  2. 筛选出出现次数≥阈值的有效值:
    valid_reasons = reason_counts[reason_counts >= 5].index
    
  3. 用有效值过滤原DataFrame:
    filtered_df = df[df['reason'].isin(valid_reasons)]
    

方法二:一步到位(高效简洁)

用groupby结合transform直接计算每组的大小,省去中间变量:

filtered_df = df[df.groupby('reason')['reason'].transform('count') >= 5]

举个例子

假设你的原始数据是这样的:

import pandas as pd

data = {
    'reason': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'C', 'D', 'D', 'D', 'D'],
    'other_col': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
}
df = pd.DataFrame(data)

运行上述代码后,filtered_df里只会保留reason为'A'的行——因为它是唯一出现次数≥5的类别,B、C、D的次数都不够,会被自动移除。

小提示

  • value_counts()默认返回降序排列的结果,方便你快速查看哪些类别符合要求
  • transform('count')会把每组的计数对应到原DataFrame的每一行,相当于给每行标记了它所属类别的总出现次数,直接和阈值对比就行

内容的提问来源于stack exchange,提问作者demetere._

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:27:45