根据需求提取points大于5的数据,并进行倒序。插入到一个新的工作表中。如下所示的Excel表格数据,请编写python代码筛选出Points大于5的数据,并按Points进行排序后输出如图2所示的Excel文件结果
图一
图二
#操作EXCEL提取出points大于5的数,并倒序插入
#导入模块
import xlrd
import xlwt
#打开工作簿
wbk = xlrd.open_workbook('rank.xlsx')
#获取工作表
mysheet =wbk.sheet_by_index(0)
#计算行数
nrows = mysheet.nrows
# print(nrows)
#建立一个空列表用来将满足条件的行值放入lt中
lt =[]
#通过遍历的方法找到每一行的值
for i in range(nrows):
myrowvalues = mysheet.row_values(i)
# print(type(myrowvalues))
# i等于0是为了将第一行也放进去,因为他是表头不是数字不能进行比较。同时取行值的第三个值与5.0进行比较。将符合要求的数据添加到空列表中
if i is 0 or myrowvalues[2]>5.0:
lt.append(myrowvalues)
# print(lt)
#将第一行值提出来,因为他是文字不能进行比较。同时作为标题
touname = lt[0]
# print(touname)
#通过索引将其他的行值提取出来并放置到表量名rows中
rows = lt[1:]
# print(rows)
#建立空列表。通过遍历,通过索引将行值的最后一位提取出来,放置在points中
points =[]
for j in rows:
points.append(j[2])
# print(points)
#进行排序,reverse=True表示执行倒序,reverse=False 表示不允许倒序,即正序。
points.sort(reverse=True)
# print(points)
#建立空列表,将刚才的标题放进去
aa=[]
aa.append(touname)
# print(aa)
#遍历,将行值按照排序的顺序进行放入,第一个遍历为遍历排序的数据,第二个遍历为,提取行值。通过if语句和索引将行值中的第三个数字和排序数字进行匹配,并安装数字排序的顺序将行值插入到列表aa中。
for i in points:
for k in rows:
if i== k[2]:
aa.append(k)
# print(aa)
#建立一个新工作簿
nwbk = xlwt.Workbook()
#建立一个新工作表,并命名
nsheet = nwbk.add_sheet('sheet1')
#求出行数和列数,并写入数据。ii表示行数,jj表示列数。通过行数和列数对每一个单元格进行数据插入。
for ii in range(len(aa)):
for jj in range(len(touname)):
nsheet.write(ii,jj,aa[ii][jj])
nwbk.save('rank.xlsx')