python合并多个excel表格文件为一个或者放到不同的sheet中

python 专栏收录该内容
8 篇文章 0 订阅

场景:许多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

 

  • 0
    点赞
  • 0
    评论
  • 4
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值