电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 合并多個excel中同名的sheet

瀏覽:7日期:2022-06-29 13:15:03

大家好~ 老Amy來啦!已經n久沒有給大家輸出關于辦公自動化的文章了…為什么呢?羅列原因:

太忙!(被領導“壓榨”) 太忙!(沒有額外的精力揣測大家辦公的需求) 太忙!(持續吃瓜中)

然鵝,一位朋友的困惑成為了我這種“麻木狀態”的終結者,他提出需求如下:

python 合并多個excel中同名的sheet

想不斷嘗試的老Amy,開啟了思考模式:“我要怎么實現這個需求呢?”。

不用著急,首先我們來分析數據本身。

分析數據特征如下:

數據所在路徑 C:UserslogicDesktopmytestfile_dir

python 合并多個excel中同名的sheet

data01.xlsx 數據如下:

python 合并多個excel中同名的sheet

data02.xlsx 數據如下:

python 合并多個excel中同名的sheet

由上可得信息如下:

所有 xlsx 工作簿都在同一個文件夾下 data01.xlsx 與 data02.xlsx 中 sheet 名相同的進行合并。也就是202001與202001合并,其它同理。

我們需要合并數據,首先需要讀取到每個工作簿下每個工作表的數據,實現流程如下:

獲取文件夾下所有工作簿名 拼接為絕對路徑 讀取所有表格數據 保存到空列表中

那要通過代碼完成上面的連環操作,我們就需要使用到 python 中的內置模塊 os 模塊——與操作系統進行交互的模塊,來獲取文件夾下所有工作簿名,代碼如下:

import os # 導入模塊# 列出 C:UserslogicDesktopmytestfile_dir 下所有文件名file_name_li = os.listdir(r'C:UserslogicDesktopmytestfile_dir')file_name_li---------------------------------------------------------------------[’data01.xlsx’, ’data02.xlsx’]

但此時,無法只通過文件名去系統中找到對應的文件,所以我們需要更準確一點兒的地址——絕對路徑,所以現在我們需要拼接每個文件的絕對路徑。代碼如下:

# 遍歷出每個文件名for file_name in file_name_li: # 將文件夾絕對路徑 與 文件名進行拼接 file_path_li = os.path.join(r'C:UserslogicDesktopmytestfile_dir',file_name) print(file_path_li) --------------------------------------------------------------------C:UserslogicDesktopmytestfile_dirdata01.xlsxC:UserslogicDesktopmytestfile_dirdata02.xlsx

有了文件的絕對路徑后,我們就可以來讀取文件中的數據,那就要使用到法寶 pandas 了。首先大家注意,pandas 并不是 python 的內置模塊,而是需要我們去安裝的。然后使用 pandas 的 read_excel() 方法讀取數據,但是需要注意的是,此時我們需要讀取的是工作簿下的所有工作表,所以需要指定 sheet_name 為 None,否則會默認讀取第一個工作表。代碼如下:

# 遍歷出每個文件名for file_name in file_name_li: # 將文件夾絕對路徑 與 文件名進行拼接 file_path_li = os.path.join(r'C:UserslogicDesktopmytestfile_dir',file_name) # 讀取 excel 表格數據 all_data = pd.read_excel(file_path_li,sheet_name=None) print(all_data) --------------------------------------------------------------------OrderedDict([(’202001’, 車牌號 駕駛員 起始公里 截至公里 里程數 加油金額 加油公升0 鄂J0969 陳燕 186701.0 186935 234 267.07 32.411 鄂A25JL NaN NaN 0 0 NaN NaN2 鄂A37NK 呂揚 40283.0 40993 710 512.08 68.373 鄂A332B NaN NaN 0 0 NaN NaN4 鄂A3J78L 尚超 0.0 33 33 NaN NaN5 鄂A484ZF 魯浩 50286.0 52574 2288 1340.84 191.456 鄂A620J 袁耀 41398.0 43604 2206 1579.69 225.677 鄂A7A8Z 志勇 41560.0 42883 1323 788.48 107.578 鄂AJ37Y 劉沖 0.0 73 73 NaN NaN9 鄂AD9251 毛義 3214.0 3349 135 NaN NaN10 鄂AD2192 趙敏 434.0 796 362 NaN NaN),...], ...)

從上打印出的結果(我取了第一個),會發現它的類型為 OrderedDict ,雖然組合起來好像不是很看得懂,但是分開來看,它的本質實際上是 Dict。所以實際上我們可以通過 202001 來獲取對應的數據值。如:

# 遍歷出每個文件名for file_name in file_name_li: # 將文件夾絕對路徑 與 文件名進行拼接 file_path_li = os.path.join(r'C:UserslogicDesktopmytestfile_dir',file_name) # 讀取 excel 表格數據 all_data = pd.read_excel(file_path_li,sheet_name=None) print(all_data['202001'])---------------------------------------------------------------------車牌號 駕駛員 起始公里 截至公里 里程數 加油金額 加油公升0 鄂J0969 陳燕 186701.0 186935 234 267.07 32.411 鄂A25JL NaN NaN 0 0 NaN NaN2 鄂A37NK 呂揚 40283.0 40993 710 512.08 68.373 鄂A332B NaN NaN 0 0 NaN NaN4 鄂A3J78L 尚超 0.0 33 33 NaN NaN5 鄂A484ZF 魯浩 50286.0 52574 2288 1340.84 191.456 鄂A620J 袁耀 41398.0 43604 2206 1579.69 225.677 鄂A7A8Z 志勇 41560.0 42883 1323 788.48 107.578 鄂AJ37Y 劉沖 0.0 73 73 NaN NaN9 鄂AD9251 毛義 3214.0 3349 135 NaN NaN10 鄂AD2192 趙敏 434.0 796 362 NaN NaN 車牌號 駕駛員 起始公里 截至公里 里程數 加油金額 加油公升0 鄂J0039 周鵬 15512 15512 0 NaN NaN1 鄂J0021 王林 7790 7790 0 NaN NaN2 鄂J0022 徐濤 373505 373505 0 NaN NaN3 鄂J0079 趙舟 431169 431169 0 NaN NaN4 鄂J0018 郭鷹 3635 3635 0 NaN NaN5 鄂J0808 周尊 257743 257743 0 NaN NaN6 鄂J01X3 胡志 72000 72150 150 159.26 25.167 鄂J01X0 吳軍 73031 73568 537 393.46 58.128 鄂J0F12 宋安 149017 149050 33 0.00 0.009 鄂J0F52 金煜 150617 150617 0 NaN NaN10 鄂J0272 劉兵 58124 58305 181 0.00 0.0011 鄂J02F2 胡飛 169665 169665 0 NaN NaN12 鄂J0292 王勇 111625 113121 1496 1081.37 156.5413 鄂J05R0 劉金 99278 99278 0 NaN NaN

從打印結果,可以發現,我們通過 202001 可以取到兩個工作簿中 202001 的數據,這是為什么呢?傻瓜,因為循環呀~所以,現在我們就想,把數據都添加到一個列表中。除此之外,我們還需要工作表名來獲取數據,也就是將工作表名保存到一個集合中(以便去重)。

# 定義文件名集合all_file_name = set()# 定義數據列表all_data_li = []# 遍歷出每個文件名for file_name in file_name_li: # 將文件夾絕對路徑 與 文件名進行拼接 file_path_li = os.path.join(r'C:UserslogicDesktopmytestfile_dir',file_name) # 讀取 excel 表格數據 all_data = pd.read_excel(file_path_li,sheet_name=None) # 將數據添加到數據列表中 all_data_li.append(all_data) # 將工作表名添加到文件夾集合中 for name in all_data: all_file_name.add(name)print(all_data_li)print(all_file_name)

有了這些寶貝之后,我們就可以來實現非常關鍵的步驟了,也就是取出相同名稱的工作表進行拼接保存到新的工作表中。

不過仍然要思考的是,我們怎么使用 pandas 給一個工作簿中添加多個工作表呢?那就需要使用 pd.ExcelWriter了。代碼如下:

# 創建工作簿writer = pd.ExcelWriter('all_data.xlsx')# 遍歷每個工作表名for sheet_name in all_file_name: data_li = [] # 遍歷數據 for data in all_data_li: # 獲取同名數據并添加到data_li中 n_rows = data_li.append(data[sheet_name]) # 將同名數據進行拼接 group_data = pd.concat(data_li) # 保存到writer工作簿中,并指定工作表名為sheet_name group_data.to_excel(writer,sheet_name=sheet_name)# 千萬莫忘記,保存工作簿writer.save()

python 合并多個excel中同名的sheet

就醬,實現完畢啦~哈哈哈哈哈

以上就是python 合并多個excel中同名的sheet的詳細內容,更多關于python 合并excel中的sheet的資料請關注好吧啦網其它相關文章!

標簽: python
相關文章:
主站蜘蛛池模板: 直齿驱动-新型回转驱动和回转支承解决方案提供商-不二传动 | 四合院设计_四合院装修_四合院会所设计-四合院古建设计与建造中心1 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 骁龙云呼电销防封号系统-axb电销平台-外呼稳定『免费试用』 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 浴室柜-浴室镜厂家-YINAISI · 意大利设计师品牌 | 咿耐斯 |-浙江台州市丰源卫浴有限公司 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | EPDM密封胶条-EPDM密封垫片-EPDM生产厂家| 喷砂机厂家_自动除锈抛丸机价格-成都泰盛吉自动化喷砂设备 | 儿童乐园|游乐场|淘气堡招商加盟|室内儿童游乐园配套设备|生产厂家|开心哈乐儿童乐园 | MES系统-WMS系统-MES定制开发-制造执行MES解决方案-罗浮云计算 | 氢氧化钾厂家直销批发-济南金昊化工有限公司 | 骨密度仪-骨密度测定仪-超声骨密度仪-骨龄测定仪-天津开发区圣鸿医疗器械有限公司 | 联系我们老街华纳娱乐公司官网19989979996(客服) | 旋振筛|圆形摇摆筛|直线振动筛|滚筒筛|压榨机|河南天众机械设备有限公司 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 陕西华春网络科技股份有限公司| 别墅图纸超市|别墅设计图纸|农村房屋设计图|农村自建房|别墅设计图纸及效果图大全 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | 温控器生产厂家-提供温度开关/热保护器定制与批发-惠州市华恺威电子科技有限公司 | IPO咨询公司-IPO上市服务-细分市场研究-龙马咨询 | 鑫达滑石-辽宁鑫达滑石集团 | 大型果蔬切片机-水果冬瓜削皮机-洗菜机切菜机-肇庆市凤翔餐饮设备有限公司 | 湿地保护| 河北凯普威医疗器材有限公司,高档轮椅系列,推车系列,座厕椅系列,协步椅系列,拐扙系列,卫浴系列 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 银川美容培训-美睫美甲培训-彩妆纹绣培训-新娘化妆-学化妆-宁夏倍莱妮职业技能培训学校有限公司 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 沈飞防静电地板__机房地板-深圳市沈飞防静电设备有限公司 | 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | 杭州货架订做_组合货架公司_货位式货架_贯通式_重型仓储_工厂货架_货架销售厂家_杭州永诚货架有限公司 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 山东氧化铁红,山东铁红-淄博科瑞化工有限公司 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 广州二手电缆线回收,旧电缆回收,广州铜线回收-广东益福电缆线回收公司 | 防水套管|柔性防水套管|伸缩器|伸缩接头|传力接头-河南伟创管道 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 钢衬玻璃厂家,钢衬玻璃管道 -山东东兴扬防腐设备有限公司 | 检验科改造施工_DSA手术室净化_导管室装修_成都特殊科室建设厂家_医疗净化工程公司_四川华锐 | 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | 空气净化器租赁,空气净化器出租,全国直租_奥司汀净化器租赁 |