如何用Python将同结构Excel工作表合并为DataFrame?代码可行性咨询
合并同结构Excel工作表的问题解析与优化方案
首先,先帮你确认现有代码的核心问题:
你当前用的pd.merge()完全不适合你要做的「堆叠同结构工作表」需求。merge是用来实现类似数据库的关联合并(比如按某一列的值匹配左右表的行),而且它一次只能处理两个DataFrame,你的写法直接传入多个DataFrame会触发参数错误,肯定无法运行。
修正后的可行代码
既然所有工作表的列标签和数据结构完全一致,我们应该用pd.concat()来把所有表按行堆叠,这才是匹配你需求的正确方法。下面是调整后的代码,我还做了新手友好的优化:
import pandas as pd # 把要读取的工作表名称整理成列表,避免重复写read_excel target_sheets = [ 'UreaImports', 'UreaExports', 'UANImports', 'UANExports', 'NH3Imports', 'NH3Exports' ] # 批量读取所有工作表,存入列表 dataframes = [] for sheet_name in target_sheets: # 统一用/作为路径分隔符,避免混写带来的路径识别问题 df = pd.read_excel('U:/ABA/Data/Trade/GTIS/GTIS Trade Shell.xlsx', sheet_name=sheet_name) dataframes.append(df) # 堆叠所有同结构的DataFrame,ignore_index重置行号避免重复 df_raw = pd.concat(dataframes, ignore_index=True) # 写入汇总表,用with语句自动管理文件,不用手动保存 with pd.ExcelWriter('U:/ABA/Data/Trade/GTIS/GTIS Python Build.xlsx', engine='xlsxwriter') as writer: df_raw.to_excel(writer, sheet_name='raw', index=False) # index=False不写入行号,让表格更干净
代码新手向解释
- 用列表存工作表名:后续要加新表只需在列表里补充名称,不用重复写读取代码,更易维护
- 循环读取+存列表:把每个工作表的DataFrame统一放进列表,是
concat拼接的标准入门用法 pd.concat():专门用于拼接同结构表格的工具,ignore_index=True会生成连续的新行号,避免原表行号重复混乱with语句管理ExcelWriter:自动处理文件打开/关闭,不用手动调用writer.save(),更安全省心
适合新手的学习资源方向
如果你想找贴合入门学习风格的资料,可以重点关注这些内容:
- Pandas官方文档的「合并、拼接与连接」章节里的Concat模块:官方文档有大量 step-by-step 的示例,从基础用法到进阶场景都覆盖,逻辑清晰易理解
- 聚焦「批量处理Excel」的入门教程:这类教程会专门讲解循环读取、批量合并的实用场景,和你的需求高度匹配,上手快
- 小型实战练习项目:比如找「合并多个月度销售报表」这类小项目练手,能快速巩固表格合并的知识点
内容的提问来源于stack exchange,提问作者Nathan
相关产品推荐
相关产品推荐

