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

使用Pandas提取各学科对应学生总数最高的州及人数的实现方法

实现步骤&代码

你之前计算错误大概率是误用了count方法:count是统计非空行数,你需要的是对「学生人数」列执行sum求和。完整实现流程如下:


第一步:按学科、州分组,计算每个学科下对应各州的总学生人数

import pandas as pd

# 按Field、Place两个字段分组,对学生人数求和,as_index=False避免分组键变成索引
field_place_total = df.groupby(['Field', 'Place'], as_index=False)['学生人数'].sum()
# 可重命名求和后的列名方便识别,非必须操作
field_place_total = field_place_total.rename(columns={'学生人数': '总学生人数'})

第二步:筛选每个学科下总学生人数最高的州,有两种常用实现方案

  • 方案1:groupby + idxmax(代码简洁,适合不需要保留并列最高的场景)
# 按Field分组,取每组总学生人数最大值对应的行索引
max_idx = field_place_total.groupby('Field')['总学生人数'].idxmax()
# 提取对应行,保留需要的三列
result = field_place_total.loc[max_idx, ['Field', 'Place', '总学生人数']]

如果某个学科存在多个州总人数并列最高,该方法只会返回第一个出现的州。

  • 方案2:groupby + transform(适合需要保留所有并列最高的场景)
# 新增列存储每个学科的最高总人数
field_place_total['学科最高人数'] = field_place_total.groupby('Field')['总学生人数'].transform('max')
# 过滤出总人数等于学科最高人数的行,再提取目标列
result = field_place_total[field_place_total['总学生人数'] == field_place_total['学科最高人数']][['Field', 'Place', '总学生人数']]

如果某个学科存在多个州总人数并列最高,该方法会返回所有符合条件的州。


最终输出的result即为你需要的三列结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:45:01