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

如何使用Pandas获取DataFrame中某百分位数以上的所有值?

获取DataFrame各列75%-100%分位区间的值

核心实现方法

不需要写复杂循环,利用Pandas的广播特性就能高效实现:

  1. 先计算各列的75%分位数:
n = df.quantile(0.75)
  1. 直接通过布尔索引筛选出每列中大于等于对应75%分位数的值(不符合条件的位置会显示NaN,保留原DataFrame结构):
filtered_df = df[df >= n]

如果想提取每列中符合条件的非空值集合,可以用apply方法:

upper_quantile_series = df.apply(lambda col: col[col >= col.quantile(0.75)])

或者整理成字典形式,键为列名,值为对应列的目标值列表:

upper_vals_dict = {col: df[col][df[col] >= df[col].quantile(0.75)].tolist() for col in df.columns}

你之前代码的问题说明

  • 第一段代码里df.mean(n)用法错误:mean()方法不需要传入分位数参数,它是直接计算整列均值,无法实现基于分位数筛选后的均值计算。如果要算各列75%分位以上值的均值,可以用:
upper_quantile_means = df[df >= n].mean()
  • 第二段循环逻辑错误:n.index是列名集合,拿列名i和分位数Seriesn比较没有意义。正确的循环方式应该是遍历每一列,针对列数据做筛选:
n = df.quantile(0.75)
for col in df.columns:
    # 获取当前列的75%分位数
    q75 = n[col]
    # 筛选当前列中符合条件的值
    upper_vals = df[col][df[col] >= q75]
    print(f"列{col}的75%-100%分位值:\n{upper_vals}\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:01:36