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

如何提取dataframe中任意占比的Top数据并设置阈值完成筛选?

实现方案

你可以直接用pandas内置的分位数计算功能实现需求,无需手动存列表取值,代码更简洁高效,也可以按照你要求的先存列表再取阈值的逻辑实现,两种方案如下:

方案1:简便实现(推荐)

直接计算99分位数作为前1%的阈值,一步完成筛选:

import pandas as pd
import seaborn as sns

# 读入数据源
df = pd.read_csv("https://raw.githubusercontent.com/srptwice/forstack/main/resultat_projet.csv")

# 计算整个DataFrame所有数值的99分位数,即前1%数值的最小临界值
threshold = df.stack().quantile(0.99)

# 按照阈值筛选,和你原有硬编码50700的筛选逻辑完全一致
df4 = df[df > threshold]

如果需要按每列单独计算前1%阈值分别筛选,修改阈值计算逻辑即可:

# 按列计算99分位数
threshold = df.quantile(0.99)
df4 = df[df > threshold]

方案2:按你要求的先存列表再取阈值的逻辑实现

import pandas as pd

df = pd.read_csv("https://raw.githubusercontent.com/srptwice/forstack/main/resultat_projet.csv")

# 把所有数值展平后降序排序
all_sorted_vals = df.stack().sort_values(ascending=False)
# 取前1%的数值存入列表
top_1pct_list = all_sorted_vals[:int(len(all_sorted_vals)*0.01)].tolist()
# 取列表第一个值作为阈值
threshold = top_1pct_list[0]

# 筛选
df4 = df[df > threshold]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:27:07