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

Pandas计算列众数出现并列时如何按自定义权重选取返回值

解决方法

核心逻辑是先筛选出所有出现频次等于最高频次的众数候选,再根据自定义的优先级分数字典取分数最高的候选即可,完整实现如下:

代码示例

import pandas as pd

# 你的优先级分数字典
score_by_priority_category = {
    'Critical': 1,
    'High': 0.6,
    'Medium': 0.4,
    'Low': 0.2
}

# 1. 统计各优先级出现频次
vc = df['Priority'].value_counts()
# 2. 获取最高出现频次
max_freq = vc.max()
# 3. 筛选所有符合众数定义的候选值
mode_candidates = vc[vc == max_freq].index
# 4. 按自定义分数规则取分数最高的候选作为最终众数
custom_mode = max(mode_candidates, key=lambda x: score_by_priority_category[x])

print(custom_mode) # 输出结果为 Medium

补充说明

  • 原方法调用df['Priority'].mode()返回Low是因为pandas默认对并列众数按字母序排序返回,以上方案直接基于频次统计结果处理,完全绕开默认排序规则,匹配业务需求。
  • 后续如果优先级分数规则调整,仅需修改score_by_priority_category字典即可,不需要改动逻辑代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:24:03