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

如何读取Excel中非表格形式的多组数据并过滤空单元格

提取Excel中的多组类表格数据

我需要读取一个包含多组类表格数据的Excel文件,这些数据以类表格形式划分存储,但并未保存为Excel正式的Table对象。目前已实现文件读取,但会读取到无关的空单元格,仅需提取其中的类表格数据。以下是我编写的代码:

def separar_tablas(df): 
    tablas = [] 
    dfs = [] 
    tabla_actual = None

    for _, row in df.iterrows():
        for i, value in row.items():
            etiqueta = str(row[2])

            if pd.notnull(value):          
                if etiqueta.startswith('RuleTable'):
                    if pd.notnull(etiqueta):
                        tablas.append(etiqueta)
        
                        if tabla_actual is not None:
                            dfs.append(tabla_actual)
                    
                        tabla_actual = pd.DataFrame(columns=df.columns)
                    
                    tabla_actual = pd.concat([tabla_actual, row],axis = 1, ignore_index=True)
                    
        
    dfs.append(tabla_actual)
    return dfs

代码问题分析与修正方案

原代码存在多处逻辑缺陷,无法正确提取目标数据:

  • 多余的内层单元格遍历,会重复触发表格创建逻辑
  • 错误使用pd.concat按列拼接行,导致表格结构混乱
  • 未处理属于当前表格的非起始行,也未过滤空行

以下是修正后的代码:

import pandas as pd

def separar_tablas(df): 
    dfs = [] 
    tabla_actual = None

    for _, row in df.iterrows():
        # 跳过全空行,排除无关空单元格
        if row.isnull().all():
            continue
        
        etiqueta = row[2]
        # 判断当前行是否为新表格的起始行
        if pd.notnull(etiqueta) and str(etiqueta).startswith('RuleTable'):
            # 若已有未完成的表格,先存入结果列表
            if tabla_actual is not None:
                dfs.append(tabla_actual)
            # 初始化新表格,用当前行的非空列作为表头(可根据实际需求调整)
            tabla_actual = pd.DataFrame(columns=row.dropna().index)
            tabla_actual.loc[len(tabla_actual)] = row
        elif tabla_actual is not None:
            # 将当前行加入正在构建的表格
            tabla_actual.loc[len(tabla_actual)] = row
    
    # 存入最后一个表格
    if tabla_actual is not None:
        dfs.append(tabla_actual)
    
    return dfs

关键优化点

  • 移除冗余循环,仅通过每行第3列判断表格起始
  • 自动过滤全空行,避免无效数据干扰
  • 按行正确拼接表格数据,保证结构正常
  • 完善收尾逻辑,避免遗漏最后一组表格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:20:08