图 2 json文件展示_利用pandas,os包,将文件夹下所有excel文件成绩信息,一人多行,转化为一人一行。如图1到图2的转换。...

图1

e403ffce4599516d5c08f2fe09318255.png

图2

09fafc7c3e633532b53b3ba4c97575ac.png

#!/usr/bin/env python# -*- encoding: utf-8 -*-'''@文件    :NRowToCols.py@说明    :成绩信息一人多行转化为一人一行@时间    :2020/10/11 09:51:03@作者    :放鸭江上@版本    :3.8'''import pandas as pdimport osdef rowtocols(filepath,resultpath):#文件路径均是双斜杠    scores=pd.read_excel(filepath,dtype=str)    scores2=pd.read_excel(resultpath,dtype=str)    #1、根据原表课程名称,获取表头,并填入新表    subjects=scores['课程名称']#获取所有课程名称,包括重复的    subjects=list(set(subjects))#获取去重后的专业并转化为list方便读取数据,set函数是一个无序不重复的元素集,list为[],set为{}    scores2=pd.DataFrame(scores2,columns=['姓名','学号','身份证号']+subjects)    scores2['姓名']=str(scores2['姓名'])#这里强制为str,如果不设置,将姓名填入新表会提示将字符串转换为浮点报错,难道默认为浮点?    scores2['身份证号']=str(scores2['身份证号'])    #2、先填学号,搭框架    numbers=scores['学号']    #去掉重复后的学号    nums=list(set(numbers))    #将去重后的学号填入新表    scores2['学号']=nums    #3、填入各科目成绩    nrows=scores.shape[0]#获取原表的行数    for i in range(0,nrows,1):        # print(scores['major'].at[i])        #先根据原表的学号,找到目标表该学号所在的行,取出原表科目名称,并把其成绩放入目标表对应科目下        number=scores['学号'].at[i]#原表第i行学号        name=scores['姓名'].at[i]#原表第i行姓名        id=scores['身份证号'].at[i]#原表第i行身份证号        scores2_index=list(scores2['学号']).index(number)#学号在新表中所在的行号                scores2['姓名'].at[scores2_index]=name#将姓名填入新表        scores2['身份证号'].at[scores2_index]=id#将身份证号填入新表        subject=scores['课程名称'].at[i]#原表第i行课程名称        score=scores['总评成绩'].at[i]#原表第i行总评成绩        scores2[subject].at[scores2_index]=score#将成绩填入新表    #4、保存文件    scores2.to_excel(resultpath,index=False,encoding="utf-8")#多个filepath路径文件,使用遍历def nrowtocols(dir):    for root_dir,sub_dir,files in os.walk(r'' + dir):#遍历目录下的根目录,子目录,所有文件        # 对文件列表中的每一个文件进行处理,如果文件名字是以‘xlxs’结尾就        # 认定为是一个excel文件,当然这里还可以用其他手段判断,比如你的excel        # 文件名中均包含‘res’,那么if条件可以改写为        # if file.endswith('xlsx') and 'res' in file:        for file in files:            filepath=dir+"\\"+file            newfilepath=dir+"\\new"+file            newinfo=pd.DataFrame()            newinfo.to_excel(newfilepath)            rowtocols(filepath,newfilepath)dir1="C:\\Users\\lenovo\\Desktop\\000"nrowtocols(dir1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值