赵乾舟 发表于 2022-1-28 20:26:12

五、列表切片应用案例--按行对数据求平均值


需求:本案例求每个人平均分写入N列
思路1:用ws.row_values(row)方法拿到整行的值,然后利用切片【1:-1】去掉第一个姓名,和最后一个空值,再用sum函数求和除以12,round函数四舍五入。
思路2:先循环每行数据,然后再循环每列,把每个数值相加除以12保留两位
下面分别上两个思路代码:


import xlrd #导入xls文件读取库。
from xlutils.copy import copy #导入工作簿复制函数
wb=xlrd.open_workbook('Chapter-5-4-1.xls') #读取工作簿。
ws=wb.sheet_by_name('分数表') #读取工作表。
nwb=copy(wb) #复制工作簿为副本。
nws=nwb.get_sheet('分数表') #读取副本工作簿中的工作表。
for row_num in range(1,ws.nrows): #循环行号。
    row_vals=ws.row_values(row_num) #根据行号读取每行的值。
    avg_score=sum(row_vals)/12 #对每行的分数求平均值。
    fmt_score=round(avg_score,2) #将平均值四舍五入到小数点后两位。
    nws.write(row_num,13,fmt_score) #将平均值写入13列中的单元格。
nwb.save('Chapter-5-4-1.xls') #保存副本工作簿。
import xlrd
from xlutils.copy import copy
wb = xlrd.open_workbook('Chapter-5-4-1.xls')
ws = wb.sheet_by_index(0)
nwb = copy(wb)
nws = nwb.get_sheet('分数表')
for row in range(1,ws.nrows):
    avg = round(sum(ws.row_values(row))/12,2)
    nws.write(row,13,avg)
nwb.save('0.xls')




页: [1]
查看完整版本: 五、列表切片应用案例--按行对数据求平均值