要求:
data文件夹中存放着某班7次作业成绩,请将7次作业的总分汇总到一个excel文件中,汇总后的excel文件包括学号、姓名、各章作业成绩、总分、平均名和排名,并按学号升序排序,如下图所示。
7个文件名分别是:
代码实现:
import pandas as pd
file_paths = [f'{
i}.xlsx' for i in range(1, 8)]
result = pd.DataFrame()
for i, file_path in enumerate(file_paths):
title = pd.read_excel(file_path, nrows=0).columns[0]
df = pd.read_excel(file_path, skiprows=2)
if i in {
6, 7}:
df['总分'] = df[['单选', '判断', '填空']].sum(axis=1)
else:
df['总分'] = df[['单选', '多选', '判断', '填空']].sum(axis=1)
df = df[['学号', '姓名', '总分']].rename(columns={
'总分': title})
if result.empty:
result = df
else:
result = pd.merge(result, df, on=['学号', '姓名'], how='outer')
result['总分'] = result.filter(regex='成绩表').sum(axis=1)
result['平均分'] = result['总分'] / 7
result = result.sort_values('总分', ascending=False)
result['排名'] = range(1, len(result) + 1)
result = result.sort_values('学号')
result.to_excel('555.xlsx', index=False)