现在有两个excel,内容分别为学生的名单(姓名、班级)和学生的成绩(姓名、成绩,没有具体班级,只有班级大类)。想把两个表合并,按照学生所在班级的顺序合并,这样以班为单位,看学生成绩方便。
一、先安装anaconda、pycharm、配置环境
看这里:https://blog.csdn.net/qq_18424081/article/details/85856713#%EF%BC%882%EF%BC%89%E5%9C%A8PyCharm%E5%AF%BC%E5%85%A5Anaconda
- 安装anaconda
- 安装pycharm
-
在pycharm配anaconda环境【关键的一张图】
image.png
二、惊喜地发现anaconda里有需要用的包:pandas
https://www.cnblogs.com/wodexk/p/10803979.html
https://ask.csdn.net/questions/718505
pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True,
suffixes=('_x', '_y'), copy=True, indicator=False,
validate=None)
how:
inner是取交集,outer是取并集
因为有退学的学生还有重名的学生,所以就取并集都保留。
学生名单长这样:
image.png作业成绩长这样:
image.png重名没想到什么更好的解决办法,但是系统里导出来的作业成绩有学生所在的大班,所以就暂时先都保留。这样如果有重名的学生,会多出来两条记录(一共出来4条记录,有2条是错误的)
import pandas as pd
if __name__ == "__main__":
score_data = pd.read_excel('作业成绩.xlsx')
student_data = pd.read_excel('学生名单.xlsx')
tables = pd.merge(student_data,score_data,how="outer", on=['姓名'])
tables.to_excel('可查询具体班级的学生成绩表.xlsx')
合并之后这样:
image.png
网友评论