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

如何基于importance列占比给Pandas DataFrame添加ranking排名列

Pandas添加按权重占比排序的排名列

原始数据

先定义初始的DataFrame:

import pandas as pd

df = pd.DataFrame({'feature':['a','b','c','d','e'],
                   'importance':[0.1, 0.5, 0.4, 0.2, 0.8]})

原始数据展示:

featureimportance
a0.1
b0.5
c0.4
d0.2
e0.8

需求说明

需要为DataFrame添加名为ranking的列,规则如下:

  • 第一步:计算每个feature的importance占比,公式为:占比 = 单个feature的importance值 / 所有feature的importance总和
  • 第二步:根据占比从高到低分配排名(占比最高的排第1,依次递推)

解决方案

可以直接通过一行代码完成计算和排名,无需额外中间列:

# 计算占比并按降序生成排名
df['ranking'] = (df['importance'] / df['importance'].sum()).rank(ascending=False, method='min').astype(int)

最终结果

执行代码后,打印DataFrame:

print(df)

输出结果:

feature  importance  ranking
0       a         0.1        5
1       b         0.5        2
2       c         0.4        3
3       d         0.2        4
4       e         0.8        1

代码说明

  • df['importance'].sum():计算所有importance的总和
  • df['importance'] / 总和:得到每个feature的权重占比
  • .rank(ascending=False, method='min'):按占比降序排名,method='min'确保相同占比的feature获得相同的最小排名(本例无重复占比,不影响结果)
  • .astype(int):将排名转换为整数类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:25:11