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

如何将通过正则匹配Excel工作表读取的三维字典转换为指定格式的Pandas DataFrame

解决办法:原生Pandas方法处理多工作表合并

首先咱们直接解决你的核心需求:不用循环,用Pandas原生函数就能把匹配到的工作表数据合并成单一DataFrame,或者直接修改读取逻辑避免生成字典。

方案1:修改读取函数,直接返回合并后的DataFrame

你原来的函数因为给pd.read_excel传了sheet_name=sheets(列表),所以返回的是工作表名: DataFrame的字典。如果想跳过字典这一步,直接得到包含所有Col1、Col2数据的DataFrame,可以修改函数逻辑:

import pandas as pd
import re

def gettingSheetName(_directory,_regex):
    '''reads the file using regex as a pattern for Sheet name'''
    xl = pd.ExcelFile(_directory)
    regex = re.compile(_regex)
    sheets = [n for n in xl.sheet_names if regex.match(n)]
    if sheets:
        # 逐个读取匹配的工作表,存入列表后合并
        df_collection = [pd.read_excel(xl, sheet_name=s, index_col=False) for s in sheets]
        # ignore_index=True 重置行索引,避免保留原工作表的索引
        return pd.concat(df_collection, ignore_index=True)

这样返回的就是你想要的结果:只有Col1、Col2列,所有工作表的数据合并在一起,没有多余的工作表名字段或索引。

方案2:如果已经拿到了工作表字典,直接合并字典里的DataFrame

如果你不想修改原函数,已经得到了那个{'SheetName': DataFrame}的字典,也可以用Pandas原生的concat直接合并所有值(也就是各个工作表的DataFrame):

# 假设你的字典叫sheet_dict
final_df = pd.concat(sheet_dict.values(), ignore_index=True)

这行代码会把字典里所有的DataFrame按行合并,自动对齐列名(这里都是Col1、Col2),最后得到符合要求的单一DataFrame。

解释你之前遇到的问题

  • 用pd.DataFrame.from_dict(Dic)报错:这个方法默认处理的是键值对为标量/一维数组的字典,而你的字典值是二维的DataFrame,所以会触发"If using all scalar values..."错误,它不适合这种场景。
  • 用pd.DataFrame(list(Sach.items()), columns=['Col1', 'Col2'])结果混乱:因为items()返回的是(工作表名, DataFrame)这样的元组,DataFrame会被当作一个整体放进新DataFrame的列里,自然会出现工作表名、列名和数据混在一起的情况,这方法只适合简单键值对的字典。

关于你尝试的concat方法

你之前用pd.concat(pd.read_excel(...))得到了带工作表名索引的DataFrame,只需要加一个ignore_index=True参数,就能去掉那个工作表名索引,重置为连续的行索引:

# 修改后的代码
df = pd.concat(pd.read_excel(xl, sheet_name=sheets, index_col=False), ignore_index=True)

扩展:如果需要保留工作表名作为一列(可选)

要是之后你需要知道每条数据来自哪个工作表,可以在concat时加上keys参数,再把索引转成列:

df = pd.concat(pd.read_excel(xl, sheet_name=sheets, index_col=False), keys=sheets)
# 把工作表名从索引转成普通列,并重命名
df = df.reset_index(level=0).rename(columns={'level_0': 'SourceSheet'})

这样会多一列SourceSheet,记录每条数据对应的工作表名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:42:34