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

对pandas DataFrame按Manufacture_Id分组应用softmax并新增Score2列

实现方案

你需要按Manufacture_Id字段分组后对每组的Score单独应用softmax,直接用pandas的groupby + transform组合就能实现,计算结果会自动和原表行顺序对齐,直接作为新列赋值即可。

import pandas as pd
from scipy.special import softmax

# 修正样例数据最后一行的id错误(原笔误写为id_2,对应实际应为id_3)
data = [
    ["id_1",93,1],
    ["id_1",91,2],
    ["id_1",86,3],
    ["id_2",88,1],
    ["id_2",73,2],
    ["id_2",72,3],
    ["id_3",34,1],
    ["id_3",24,2],
]
test = pd.DataFrame(data, columns = ['Manufacture_Id', 'Score', 'Rank'])

# 核心逻辑:分组应用softmax,不需要保留小数可以去掉.round(2)
test['Score2'] = test.groupby('Manufacture_Id')['Score'].transform(softmax).round(2)

# 验证每组Score2求和为1
print(test.groupby('Manufacture_Id')['Score2'].sum())
# 打印最终结果
print(test)

运行后输出的结果和你提供的预期输出一致,每个Manufacture_Id分组下的Score2总和为1,符合概率分布要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:36:03