场景:许多excel文件格式和内容的标题都一样,需要将这些表格合并到一起,有5个表,每个表10行的话,合并后就是50行的数据
方案1:文件放到一个目录中遍历所有文件然后进行数据合并-合并到不同sheet
目录 d:/表格存放/ 下存放了5个excel文件
要求输出到d盘根目录下面 ‘合并后表格.xlsx’
import os
import pandas as pd
#定义一个函数读取文件路径
def file_name_paths(path='D:/UP', find=None, case_sensitive=False):
'''目录下的所有文件,包括子目录,返回值为多个文件的完整路径列表
path: 路径
find:None:关闭过滤(搜索功能)
'.csv' 过滤.csv的文件
case_sensitive :区分大小写 默认为不区分
'''
path_collection=[]
for dirpath,dirnames,filenames in os.walk(path):
for file in filenames:
fullpath=os.path.join(dirpath,file)
if '~$' not in file.upper():
if case_sensitive:
if find:
if find in file:
path_collection.append(fullpath)
else:
path_collection.append(fullpath)
else:
if find:
if find.upper() in file.upper():
path_collection.append(fullpath)
else:
path_collection.append(fullpath)
else:
pass
return path_collection
#读取要合并的目录下的文件,如果里面有其他非.xlsx文件不要合并:file_name_paths('d:/表格存放',find='.xlsx')
file_name_list = file_name_paths('d:/表格存放')
#定一个一个空的df,用来存放所有的表格
summary_table = pd.DataFrame()
for file_name in file_name_list:
data_temp = pd.read_excel(file_name) #循环读取每个表格
summary_table = summary_table.append(data_temp) #添加到上面的空的df中
summary_table.to_excel('d:/合并后表格.xlsx',index=False) #导出
方案2:文件放到一个目录中遍历所有文件然后进行数据聚合,将不同文件放到excel中的不同sheet里面
file_name_list = file_name_paths('d:/表格存放')
writer = pd.ExcelWriter('d:/合并后表格2.xlsx')#创建一个表
for file_name in file_name_list:
data_temp = pd.read_excel(file_name) #循环读取每个表格
data_temp.to_excel(writer,os.path.splitext(os.path.basename(file_name))[0],index=False) #将每个表分别放到以名称命名的sheet中
writer.save() #保存d:/合并后表格2.xlsx