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

如何提取Word表格生成DataFrame,避免循环处理时新增多余行列

问题原因

原代码将所有表格的所有数据行无差别合并到同一个列表,生成DataFrame后转置时,每一条数据行会被转为独立的新列,不会按表格分组、按字段对齐填充缺失位置。

修正后代码

from docx.api import Document
import pandas as pd

def extract_tables_from_docx(path, output_path, name):
    document = Document(path)
    # 存储每个表格对应的字段序列
    table_series_list = []
    for table_idx, table in enumerate(document.tables, start=1):
        current_table_dict = {}
        # 跳过表头行,若你的表格没有表头可删除[1:]
        for row in table.rows[1:]:
            # 取当前行第一列为字段名,第二列为对应值,可根据你的表格结构调整
            field_name = row.cells[0].text.strip()
            field_value = row.cells[1].text.strip()
            current_table_dict[field_name] = field_value
        # 将当前表格转为Series,命名为对应表格标识,作为后续拼接的一列
        current_series = pd.Series(current_table_dict, name=f"表格{table_idx}")
        table_series_list.append(current_series)
    # 横向拼接所有表格序列,自动按字段名对齐,缺失值填充NaN
    final_df = pd.concat(table_series_list, axis=1)
    # 导出为csv,utf-8-sig编码保证中文在Excel中正常显示
    final_df.to_csv(f"{output_path}/{name}.csv", encoding="utf-8-sig")
    return final_df

逻辑说明

  • 以单个表格为处理单位,每个表格提取为一个以字段名为索引的Series对象
  • 调用pd.concat沿列方向拼接所有Series,会自动根据索引(字段名)对齐,对应字段有值就填充,无值则保留NaN,完全匹配你需要的效果
  • 若你的表格结构不是两列键值对的格式,只需要调整行内单元格的取值逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:51:00