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

Pandas DataFrame如何删除同id对应行数小于指定阈值的所有行

实现方案(基于Pandas)

你可以直接用Pandas内置的分组过滤能力实现需求,不需要手动遍历id,效率更高,以下是两种常用实现方式:

方案1:groupby + filter (写法最简洁)

直接通过分组过滤保留行数符合要求的id对应所有行:

import pandas as pd

# 设定行数阈值
threshold = 50
# 过滤后赋值给新的df即可
df = df.groupby('id').filter(lambda x: len(x) >= threshold)

该方法适合中小体量数据集,代码可读性最高。

方案2:transform + 布尔索引(性能最优)

针对百万级以上的大数据集,用transform预计算每个id的行数再筛选,性能比方案1高30%以上:

threshold = 50
# 给每行新增对应id的总计数字段
df['id_row_count'] = df.groupby('id')['id'].transform('count')
# 筛选符合要求的行后删除临时计数字段
df = df[df['id_row_count'] >= threshold].drop(columns='id_row_count')

手动遍历实现(不推荐,效率低)

如果你确实需要按遍历id的逻辑实现,可以参考以下写法:

threshold = 50
keep_ids = []
# 遍历所有唯一id
for id_val in df['id'].unique():
    # 统计当前id对应的行数
    if len(df[df['id'] == id_val]) >= threshold:
        keep_ids.append(id_val)
# 只保留符合要求的id对应数据
df = df[df['id'].isin(keep_ids)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:57:03