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

如何使用pandas提取DataFrame每行前20%数值对应的列名

pandas实现行维度前20%数值列名提取

完整实现代码

import pandas as pd

# 1. 构造示例DataFrame,实际使用时替换为你自己的数据源即可
df = pd.DataFrame({
    'i1': [4],
    'i3': [2],
    'i4': [1],
    'i9': [4],
    'i14': [1],
    'i16': [3],
    'i17': [3],
    'i18': [4],
    'i19': [2],
    'i20': [2],
    'i22': [4],
    'i26': [1],
    'i27': [4],
    'i28': [3]
})

def get_top20_columns(row):
    # 计算当前行80分位数作为前20%数值的筛选阈值
    # interpolation='higher'保证阈值取到刚好覆盖前20%的最小数值,匹配示例输出
    threshold = row.quantile(q=0.8, interpolation='higher')
    # 返回符合条件的列名列表
    return row[row >= threshold].index.tolist()

# 2. 对DataFrame所有行执行处理,结果存储到新列top_20_cols中
df['top_20_cols'] = df.apply(get_top20_columns, axis=1)

# 输出第一行结果验证,和预期完全一致:['i1', 'i9', 'i18', 'i22', 'i27']
print(df.iloc[0]['top_20_cols'])

说明

  • 如果需要单独获取所有行的处理结果,直接调用df['top_20_cols'].tolist()即可得到嵌套列表格式的结果
  • 可根据需求调整quantile的q参数修改筛选比例,比如要取前30%就把q改成0.7即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 20:00:04