300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 怎样从excel随机抽取多行

怎样从excel随机抽取多行

时间:2021-02-27 02:47:30

相关推荐

怎样从excel随机抽取多行

你好!

需求详述:

有个Excel工作簿,里面存了几个sheet,需要从每个工作表中随机抽取n行,存入新表格中。另外,新表格要根据原来的工作表名称命名,以便查找结果。

本次用python实现,有Excel插件叫方方格子也可以随机抽取,但结果不是期望的亚子,可能我的打开方式有问题,大家感兴趣可以试一下,有时间再详述区别~

上代码:

from openpyxl import *import pandas as pdimport random'''从桌面某个Excel工作簿中的每个sheet随机抽取30行,并分别输出'''#给出文件信息file_locate ='C:/Users/Administrator/Desktop/'#文件存放路径workbook_name = input('请输入存放在桌面的指定工作簿的完整名称。 '+'例如存放在桌面的《北京各部门.xlsx》 '+'应输入:北京各部门.xlsx 请输入:')#文件全名filename=file_locate+workbook_name#用openpyxl的方法将表格数据读入wb = load_workbook(filename)count_worksheets = len(wb.worksheets)#统计一共几张工作表# print(count_worksheets)for sheet_index in range(count_worksheets):ws = wb.worksheets[sheet_index]results = []for row in ws.iter_rows():results.append([cell.value for cell in row])# 获取当前处理的表格的名字、记录数量print('第',sheet_index+1,'张表(共',count_worksheets,'张):')print('当前使用的表格:',ws)print(ws, '共有', len(results)-1, '条数据')# 获取当前sheet的名称,用于给新表命名re_table_name = str(ws)[12:-2]# 把当前表的数据放到DataFrame,开始选取df = pd.DataFrame(results)chosed_rows_num = []chosed_rows_num.clear()print('初始的选中行号chosed_rows_num',chosed_rows_num)for need_rows in range(30):#这里可以自定义抽取的行数,目前为30行j = random.randint(1, len(results)-1) #注意!如果随机数上限包含len(results),一旦抽中它,就会报错,因为index只到len(results)-1,已处理chosed_rows_num.append(j)#输出结果new_df = df.iloc[[0] + chosed_rows_num]print('最后的选中行号chosed_rows_num:',chosed_rows_num)new_df.to_excel('C:/Users/Administrator/Desktop/' + re_table_name + '.xlsx', header=False, index=True)print('第',sheet_index+1,'张表',ws,'已处理\n')chosed_rows_num.clear()

小提示:

文件名(即上文中的workbook_name)可以右键单击存放在桌面的工作簿-属性-复制文件名即可。另外,注意windows路径是\作区隔,python中要用/。

以上。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。