You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:00:14