赞
踩
1、背景
最近课题组帮老师整理、汇总文献,由于每个人汇总方式的差异,导致产生了许多空的表格,由于表格数量之多,一个个的点开再筛选会浪费大量的时间,故想到利用最近新学习的pandas来进行初步的筛选。
2、筛选表格依据
如下图,第一张图为我们想要的,第二张图为我们想要过滤掉的Excel,因此我们可以通过判断单元格B2来进行筛选,筛选代码如下:
3、筛选代码
3.1 导入模块
import os
import pandas as pd
import glob
3.2 设置路径即文件所在位置
os.chdir(r'E:\study\Excel')
excel_list = glob.glob('**/*.xlsx', recursive = True) #在当前路径下层层深入,找到所有的以'.xlsx'结尾的文件
# print(excel_list) #查看筛选出的excel
3.3 文件筛选代码
excel_selected = []
for excel in excel_list:
data = pd.read_excel(excel)
if type(data.loc[0, '种类']) == str:
excel_selected.append(excel) #将筛选出的excel存入列表
#print(excel_selected) #打印筛选出的excel
3.4 将筛选出的文件打包
with zipfile.ZipFile('selected_excel.zip', 'w') as zipobj:
for excel in excel_selected:
zipobj.write(excel)
# os.remove(files) #删除筛选源文件
3.5 将筛选出的Excel合并
df = pd.DataFrame()
for excel in excel_selected:
df_ = pd.read_excel(excel)
df = pd.concat([df, df_])
df.to_excel('data.xlsx', index = False)
#data = pd.read_excel('data.xlsx') #读取合并后的表格
所有代码如下:
import os import pandas as pd import glob os.chdir(r'E:\study\Excel') excel_list = glob.glob('**/*.xlsx', recursive = True) #在当前路径下层层深入,找到所有的以'.xlsx'结尾的文件 # print(excel_list) #查看筛选出的excel excel_selected = [] for excel in excel_list: #迭代excel_list列表 data = pd.read_excel(excel) #读取excel if type(data.loc[0, '种类']) == str: #判断读取的Excel表格中单元格B2处是不是有字符串 excel_selected.append(excel) #将单元格B2处有字符串的Excel筛选出来,存入列表excel_selected中 #print(excel_selected) #打印筛选出的excel with zipfile.ZipFile('selected_excel.zip', 'w') as zipobj: for excel in excel_selected: zipobj.write(excel) df = pd.DataFrame() for excel in excel_selected: df_ = pd.read_excel(excel) df = pd.concat([df, df_]) df.to_excel('data.xlsx', index = False) #print(pd.read_excel('data.xlsx')) #读取并打印合并后的表格 print('Finished!')
3.6 结果在该路径下生成了筛选出的zip文件及合并后的excel文件
注:合并excel代码参考:https://blog.csdn.net/lys_828/article/details/104932473
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。