求助:基于学号/姓名合并数据并将科目成绩归入新列的实现方案
学生成绩数据合并解决方案
方法一:使用Excel Power Query(无需复杂公式)
- 选中你的原始数据区域,点击顶部菜单栏「数据」→「从表格/区域」(弹出对话框时勾选「我的表格有标题」,点击确定)
- 进入Power Query编辑器后,按住Ctrl选中「学号」和「姓名」两列
- 点击顶部「转换」选项卡→「透视列」
- 在弹出的设置窗口中:
- 「值列」选择「成绩」
- 「列名」选择「科目」
- 「聚合函数」选择「不要聚合」(每个学号+姓名+科目仅对应一条成绩记录,无需聚合)
- 点击「确定」后,点击编辑器左上角「关闭并上载」,合并后的表格会自动生成在新工作表中
方法二:使用Python Pandas快速处理
先通过pip install pandas openpyxl安装依赖库,再运行以下代码:
import pandas as pd # 读取原始数据文件,替换为你的文件路径(支持xlsx、csv格式) df = pd.read_excel("原始学生成绩.xlsx") # 按学号、姓名分组,将科目转为列,对应填充成绩 merged_df = df.pivot_table( index=["学号", "姓名"], columns="科目", values="成绩", aggfunc="first" # 针对唯一记录直接取值,避免重复聚合 ).reset_index() # 可选:将列名改为「语文成绩」「数学成绩」这类更直观的名称 merged_df.columns = ["学号", "姓名"] + [f"{subject}成绩" for subject in merged_df.columns[2:]] # 保存合并后的结果到新文件 merged_df.to_excel("合并后学生成绩.xlsx", index=False)
补充说明
- Excel的Consolidate功能更适合数值汇总计算,不匹配这种「行转列+唯一值匹配」的场景,Power Query是更适配的工具
- 手动遍历Python代码容易出现索引匹配错误,用pandas的透视表函数可自动完成分组和列匹配,避免手动逻辑的bug
内容的提问来源于stack exchange,提问作者Vidhya Dhara
相关产品推荐
相关产品推荐

