一、前言
大家好,我是Python进阶者。前一阵子给大家分享了Python自动化文章:手把手教你利用Python轻松拆分Excel为多个CSV文件,手把手教你4种方法用Python批量实现多Excel多Sheet合并,而后在Python进阶交流群里边有个叫【扮猫】的粉丝遇到一个问题,她有很多个Excel表格,而且多个excel里多个sheet表,现在需要对这些Excel文件进行合并。
用上面链接对应的方法进行合并,发现只能够合并Sheet,其他的就合并不了,这确实是个问题。
诚然,一个一个打开复制粘贴固然可行,但是该方法费时费力,还容易出错,几个文件还可以手动处理,要是几十个甚至上百个,你就抓瞎了,不过这问题对Python来说,so easy,一起来看看吧!
前天本来针对这个问题,已经发布了一篇文章,盘点4种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据,里边盘点了4个方法,测试之后完全可行,这篇文章十分的受欢迎,评论和点赞真不错。
今天这里继续补充两个方法,高手在民间,感谢【🌑(这是月亮的背面)】和【韩峰】两位大佬提供的思路和代码。
这个方法是来自【韩峰】大佬的分享,代码如下。
# -*- coding: utf-8 -*-
import pandas as pd
import os
path = r'E:\PythonCrawler\python_crawler-master\MergeExcelSheet\file\777'
file_list = []
for root, dirs, filename in os.walk(path):
for file in filename:
file_list.append(path + '\\' + file)
# The_All_data = pd.DataFrame()
All_data = pd.DataFrame()
for Prowler in file_list:
ereader = pd.ExcelFile(Prowler) # 读到文件名称
one_sheet_name = ereader.sheet_names # 读到文件中所有sheet的名字
for Sheet_Prowler in one_sheet_name:
All_sheet_data = pd.read_excel(ereader, sheet_name=Sheet_Prowler) # 读取文件名称中所有sheet的数据
temp = pd.concat([All_data, All_sheet_data])
All_data = pd.DataFrame(temp)
# Montage = pd.concat([The_All_data, All_sheet_data]) # 拼接表格:将一个一个表格中所有sheet的数据放到汇总表之中
# The_All_data = pd.DataFrame(Montage) # 将添加了新的数据的表格赋值给总表,下一次就会接到这个表的最后面。
print(All_data)
All_data.to_csv(r'E:\PythonCrawler\python_crawler-master\MergeExcelSheet\file\777\The_All_data.csv')
这个方法是来自【🌑(这是月亮的背面)】大佬的分享,代码如下。
# -*- coding: utf-8 -*-
from pathlib import Path
import pandas as pd
path = Path(r'E:\PythonCrawler\python_crawler-master\MergeExcelSheet\file\888')
pd.concat([pd.concat(pd.read_excel(i, sheet_name=None)) for i in path.glob("[!~]*.xls*")],
ignore_index=True).to_excel("result.xlsx", index=False)
print('合并完成!')
如果没有前面几个方面的铺垫,上来直接看这个代码,相信大部分都直接晕乎了,我这里给他稍微拆分了下,方便大家理解,实际上确实是一行代码,可以在上面的聊天截图中看到,着实精辟!
关于效果展示方面,这里就不贴图了,亲测好使。
说到这里,又想多唠叨两句,有时候看别人的代码,确实可以跑,自己拿过来,不一定能跑,就很迷,下图是【冫马讠成】大佬自己测试的时候遇到的问题,其实就是少模块,安装xlrd之后,就可以运行正常了。
本文从实际工作出发,基于Python编程,介绍了6种方法,实现批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据,为大家减少了很多复制粘贴的麻烦,省时省力,还不容易出错。代码不多,循环追加有点绕,想想也就明白了,不懂的随时留言提问,大家一起学习进步。
本文分享自 Python爬虫与数据挖掘 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!