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

使用Pandas groupby统计各州大选获胜者时如何保留候选人列

解决方案

你可以通过以下两种简洁的方法实现需求,直接定位每个州得票最高的完整行,自然保留候选人列信息:

方法1:排序后按州去重(逻辑最直观)

先按州分组、组内按总票数降序排序,再按州去重保留第一条即可:

# 按州升序、总票数降序排序
group_sorted = group.sort_values(['state', 'totalVoteSum'], ascending=[True, False])
# 按州去重,保留每个州第一条(得票最高)的记录
state_winner = group_sorted.drop_duplicates('state', keep='first')
# 调整列名和顺序匹配你需要的输出格式
state_winner = state_winner.rename(columns={
    'state': 'State',
    'candidate': 'Candidate',
    'totalVoteSum': 'Votes'
})[['State', 'Candidate', 'Votes']].reset_index(drop=True)

方法2:用idxmax定位最高得票行索引

直接通过分组取最高得票对应的行索引,提取对应行即可:

# 获取每个州总票数最高的记录的行索引
max_vote_idx = group.groupby('state')['totalVoteSum'].idxmax()
# 提取对应行并调整输出格式
state_winner = group.loc[max_vote_idx].rename(columns={
    'state': 'State',
    'candidate': 'Candidate',
    'totalVoteSum': 'Votes'
})[['State', 'Candidate', 'Votes']].reset_index(drop=True)

原代码问题说明

你之前的写法只对totalVoteSum列做了max聚合计算,pandas默认不会自动关联该最大值对应的candidate字段,所以会丢失该列。上面两种方法都是直接定位到最高得票对应的完整行,因此可以保留所有需要的字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:06:00