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

如何基于排序算法在Pandas中确定投票获胜候选人?

解决Pandas中基于投票数据确定获胜候选人的问题

看起来你需要根据每行候选人的得票数,按照特定规则选出获胜者。先理清楚你的需求:从给定的投票数据中,每行的获胜者是得票数最高的候选人;当Candidate_A和Candidate_B得票数相同时,优先选择Candidate_A;如果其他候选人(比如Candidate_C)得票更高,则直接选得票最高的那个。

先看你的原始数据:

import pandas as pd

data = {
    "No": [1, 2, 3],
    "Candidate_A": [8, 18, 9],
    "Candidate_B": [9, 9, 9],
    "Candidate_C": [12, 12, 7]
}
df = pd.DataFrame(data)

原始数据的表格形式:

NoCandidate_ACandidate_BCandidate_C
18912
218912
3997

解决方案代码

# 提取所有候选人列(排除序号列"No")
candidate_cols = df.columns[1:]

# 对每行取得票最高的候选人列名
df["Result"] = df[candidate_cols].idxmax(axis=1)

# 查看最终结果
print(df)

运行后得到的结果完全符合你的期望:

NoCandidate_ACandidate_BCandidate_CResult
18912Candidate_C
218912Candidate_A
3997Candidate_A

逻辑解释

  • df.columns[1:]:筛选出所有候选人的列,跳过第一列的序号"No"。
  • idxmax(axis=1):按行方向遍历,返回每行最大值对应的列名。因为Candidate_A的列在Candidate_B之前,当两者票数相同时,idxmax()会优先返回Candidate_A,刚好满足你设定的并列规则。
  • 这个方法扩展性很强,如果后续新增候选人,只要保证优先级高的候选人列排在前面,就能自动适配规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:37:19