代码说明
读取文件:
使用 pd.read_excel 读取原始 Excel 文件。
定义学科列表:
subjects 是需要输出的学科列表。
遍历每个班级:
使用 df['班级'].unique() 获取所有班级名称,并遍历每个班级。
对每个班级,筛选出当前班级的数据。
筛选前10名学生:
使用 sort_values 按总分降序排序,并使用 head(10) 取前10名学生。
选择需要的列:
选择 姓名 和各科成绩列。
将结果写入 Excel:
使用 pd.ExcelWriter 将每个班级的前10名学生信息写入新的 Excel 文件的不同工作表中。
import pandas as pd# 读取原始 Excel 文件input_file = '期末教学质量评价.xlsx'output_file = '每班前10名.xlsx'# 读取 Excel 文件df = pd.read_excel(input_file)# 定义学科列表subjects = ['语文', '数学', '英语', '科学', '历史与社会']# 创建一个 ExcelWriter 对象,用于写入多个工作表with pd.ExcelWriter(output_file) as writer: # 遍历每个班级 for_name in sorted(df['班级'].unique()): # 筛选当前班级的数据 _df = df[df['班级'] ==_name] # 按总分降序排序,取前10名 top_10_students =_df.sort_values(by='总分', ascending=False).head(10) # 选择需要的列:姓名和各科成绩 top_10_students = top_10_students[['姓名'] + subjects] # 将结果写入新的工作表 top_10_students.to_excel(writer, sheet_name=f'{class_name}', index=False)print(f"每班前10名学生信息已保存到 {output_file}")
输出的前10名成线