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

合并Excel工作表时遇TypeError与shape mismatch错误求助

解决Excel多工作表合并的两类Pandas错误

错误原因分析

错误1:TypeError: first argument must be an iterable of pandas objects, you passed an object of type "DataFrame"

用pd.read_excel(..., sheet_name=None)读取文件时,返回的是字典结构——键是工作表名称,值是对应工作表的DataFrame。直接把这个字典传给pd.concat()会触发错误,因为pd.concat默认迭代字典的键(字符串类型),而非字典内的DataFrame对象。

错误2:shape mismatch: objects cannot be broadcast to a single shape

不同工作表的列结构不匹配:要么列数量不一致,要么列名称不对应,导致Pandas无法对齐行数据完成合并。


修复后的代码

import pandas as pd

wb_url = r'D:\DA\power query data\Excel Power Query Practice Material\36. Power Query - Append Queries\Append Queries\Yearly Data - Tables - Quick Method.xlsx'

# 读取所有工作表,返回{工作表名: DataFrame}的字典
excel_file = pd.read_excel(wb_url, sheet_name=None)

# 提取字典中的DataFrame集合进行合并,重置索引并保留原列顺序
combined_df = pd.concat(excel_file.values(), ignore_index=True, sort=False)

# 可选:给合并结果添加"来源工作表"列,方便追溯数据来源
dfs_with_source = []
for sheet_name, df in excel_file.items():
    df['来源工作表'] = sheet_name
    dfs_with_source.append(df)
combined_df_with_source = pd.concat(dfs_with_source, ignore_index=True, sort=False)

关键说明

  • excel_file.values():提取字典内所有DataFrame组成可迭代对象,直接解决TypeError问题。
  • ignore_index=True:合并后重置行索引,避免不同工作表的原始索引重复冲突。
  • sort=False:保留各工作表原本的列顺序,不会自动按列名排序。
  • 若工作表列差异较大,合并后缺失的列会自动填充NaN,无需额外处理。

内容的提问来源于stack exchange,提问作者Abt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 03:07:37