当前位置: 首页 > article >正文

从两个 Excel 表格中提取相关信息,并根据学生的 学号 和 姓名 将第一个表格中的成绩数据填充到第二个表格中(附Python代码)

目录

  • 一、需求
  • 二、实现
    • 2.1 安装pandas和openpyxl库
    • 2.2 代码参数修改
    • 2.3 代码
    • 2.4 运行结果

一、需求

将从两个 Excel 表格中提取相关信息,并根据学生的 学号 和 姓名 将第一个表格中的成绩数据填充到第二个表格中。其中第一个表格内容是根据学生综合成绩排名排好顺序的,而第二个表格中只有学生学号和姓名,随机排序的。现在需要将表格1中学生的学号和姓名对应的成绩统计好表格2中对应名下。

第一个表格内容见下:

在这里插入图片描述

第二个表格内容见下:

在这里插入图片描述

二、实现

使用 pandas 库来读取 Excel 表格并根据学号和姓名来匹配成绩。

2.1 安装pandas和openpyxl库

在对应环境的终端中使用下面命令安装:

pip install pandas openpyxl -i https://pypi.mirrors.ustc.edu.cn/simple/

2.2 代码参数修改

使用代码时,只需要分别修改两个表格的路径,见下:
在这里插入图片描述

2.3 代码

完整的代码见下:

import pandas as pd

# 读取第一个和第二个Excel表格
file1 = 'Excel/1-4班 综合素质测评汇总表 (2).xlsx'  # 替换为第一个Excel的文件路径
file2 = 'Excel/综测分导入.xls'  # 替换为第二个Excel的文件路径

df1 = pd.read_excel(file1)            # pd.read_excel() 用于读取 Excel 文件
df2 = pd.read_excel(file2)            # df1 和 df2 是读取 Excel 后生成的 Pandas 数据框(DataFrame),它们分别存储了两个 Excel 文件中的数据。

print('df1',df1.columns)              # 打印 df1 和 df2 的列名(columns 属性)
print('df2',df2.columns)


# 根据学号和姓名,将第一个表格中的相关成绩信息填充到第二个表格中
df_merged = pd.merge(df2, df1[['学号', '姓名', '体育成绩', '文体类加分', '惩罚分数','奖励分数','学业成绩','操行考评成绩', '诚信分', '思想政治基础分',  '担任学生工作', '公益活动', '竞赛获奖']],
                     on=['学号', '姓名'],
                     how='left')
'''
pd.merge() 用于合并两个数据框。
df2 是第二个表格数据,作为基础表格。
df1[['学号', '姓名', '体育成绩', '文体类加分', '惩罚分数', '奖励分数', '学业成绩', '操行考评成绩', '诚信分', '思想政治基础分', '担任学生工作', '公益活动', '竞赛获奖']] 表示从第一个表格 df1 中选择这些列,这些列包含需要从第一个表格复制到第二个表格的成绩信息。
on=['学号', '姓名'] 表示按照 学号 和 姓名 两列来进行数据匹配和合并。即,如果 df2 和 df1 中有相同的 学号 和 姓名,那么将 df1 中的相关成绩信息复制到 df2 中。
how='left' 表示进行“左连接”(Left Join)。这意味着保留 df2 中所有的行,即使这些行在 df1 中没有匹配的值。如果 df1 中没有对应的 学号 和 姓名,这些列会填充 NaN(空值)。
'''

# 保存合并后的数据到一个新的Excel表格中
df_merged.to_excel('path_to_output_excel_3.xlsx', index=False)

print("数据已成功合并并保存到新的Excel表格中!")


2.4 运行结果

运行上面代码,数据会重新生成在根目录下的path_to_output_excel_3.xlsx文件夹中,见下:

在这里插入图片描述
在这里插入图片描述

下面是最终处理完的样子,与表格2中所需内容一致。

在这里插入图片描述


http://www.kler.cn/news/326938.html

相关文章:

  • 【LeetCode HOT 100】详细题解之链表篇
  • 【Kubernetes】常见面试题汇总(四十八)
  • MySQL实现跨服务器查询
  • Vscode超好看的渐变主题插件
  • Axure9破解
  • MySQL中的嵌套查询
  • Go实现RabbitMQ消息模式
  • 科研绘图系列:R语言堆积图(stacked barplot)
  • 数据驱动农业——农业中的大数据
  • MySQL | excel数据输出insert语句
  • STM8S003F定时器延时
  • 【华为HCIP实战课程二】OSPF基础介绍和OSPF RID NBMA配置详解
  • 软件测试学习笔记丨curl命令发送请求
  • 【机器学习】---异构数据融合
  • 【C语言】字符和字符串函数(2)
  • uniapp在线打包的ios后调用摄像头失败的解决方法
  • 51单片机的智能垃圾桶【proteus仿真+程序+报告+原理图+演示视频】
  • 数据库课程设计案例:在线图书管理系统
  • SpringBoot+Activiti7工作流入门实例
  • 2024年国外优质API:情绪识别口碑佳
  • fastapp-微信开发GPT项目第一课
  • CSV数据行(取值)的列数多于表头字段数-Pandas无法正常读取
  • 主成分分析法
  • 杨辉三角-C语言
  • ppt模板如何制作?建议试试这4招
  • golang学习笔记17-切片
  • 正则表达式和re模块
  • 递归算法介绍和【题解】——数楼梯
  • JS设计模式之享元模式:优化对象内存占用的利器
  • 新手教学系列——系统模块划分原则:如何让系统架构更加灵活与高效