有一张学生年级成绩表,我想在做一张统计表,自动算出,每个班级中每科前三名的成绩。大表是这样的,班级、学生、总成绩,我想在另一张表中统计出这张表五年四班总成绩前三名的分数
用pandas中nlargest函数,DataFrame.
nlargest
(n, columns, keep='first'),等同于:df.sort_values(columns, ascending=False).head(n),但是更具有效能。
import pandas as pd
df=pd.read_csv('stu1.csv')
df = df.groupby('班级')['语文', '数学', '英语', '总成绩'].apply(lambda x: x.nlargest(3, ['语文', '数学', '英语']).sort_values(
by='总成绩',ascending=False))
试试这个
import pandas as pd
import numpy as np
data = pd.read_excel('c:/users/用户/desktop/文件.xlsx')
result = data.groupby('班级').apply(lambda x: x.nlargest(3,'总成绩')).reset_index(drop=True)
result1 = data.sort_values(by='总成绩',ascending=False).groupby('班级').head(3)
您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632