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

如何用Pandas剔除某列数值排名前n%的行?

用Pandas按百分比剔除高count值用户的方法

针对你百万行的DataFrame,要剔除count列排名前n%的用户,用Pandas的分位数或百分比排名功能就能搞定,不用全量排序,效率更高:

方法一:基于数值阈值(quantile)

这种方法先算出count列的分位数阈值,保留低于该阈值的行,适合关注数值而非严格行数占比的场景:

# 示例:剔除前5%的用户,计算95%分位数作为阈值
n_percent = 5
threshold = df['count'].quantile(1 - n_percent / 100)
# 筛选出count小于阈值的行,即剔除前5%的高count用户
filtered_df = df[df['count'] < threshold]

如果有多个用户的count刚好等于阈值,剔除的实际比例可能略高于n%,因为这些用户都会被排除。

方法二:严格按行数百分比(rank)

如果需要精准剔除前n%的行数,用百分比排名功能:

n_percent = 5
# 计算每行的百分比排名(降序,最大的count排名为1%)
df['pct_rank'] = df['count'].rank(pct=True, ascending=False)
# 保留排名在n%之后的行,再删除临时列
filtered_df = df[df['pct_rank'] > n_percent / 100].drop('pct_rank', axis=1)

这种方式会严格按行数占比筛选,即使有重复的count值,也能保证剔除的行数刚好是前n%左右。

两种方法都适合百万行规模的数据,不用全量排序,性能远优于先排序再取前n行的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:47:09