pandas根据列数据的值范围计数

spiritgs 2021-01-06 04:34:04
请教:
数据形式

我想要统计各班各学科名次在前150名的人数,请问如何解决?
...全文
871 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bryce-Lin 2021-01-07
  • 打赏
  • 举报
回复 1
先筛选出来各班在前150名的 ,比如统计1班语文的人数 df1=df[(df["班级"]==1)&(df["语文名次"]<=150)] count = len(df1)
spiritgs 2021-01-07
  • 打赏
  • 举报
回复
# 创建列表,为提取前3后2人数用
f3_and_e2 = df.columns[3::2]
# 前3计数并创建列
for i in f3_and_e2:
if i != '总分名次':
df_all_f3 = df[df[i] <= 148]
df_average['%s前3' % i] = df_all_f3.groupby('班级')[i].count()

思路:
1、创建需要提取的列标签名
2、for循环,依次筛选列数据(名次)≤148名的数据
3、用groupby对班级进行分组,并用count计数

以此达到分班级统计范围内的学生人数。

案例中是对各科成绩在前148名的学生进行班级人数统计。

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧