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

如何读取Word非结构化表格第3行起数据并构建正确DataFrame?

读取Word非结构化表格并构建指定格式DataFrame

我的Word文档里有个非结构化表格,需要读取从第3行开始的数据,构建成格式正确的DataFrame。表格样式如下:
Word表格样式

期望输出

Rows start   day1   day2   day3   day4   day5   day6
0           1  test1  test2  test3  test4  test5  test6
1           2  test1  test2  test3  test4  test5  test6
2           3  test1  test2  test3  test4  test5  test6
3           4  test1  test2  test3  test4  test5  test6
4           5  test1  test2  test3  test4  test5  test6

尝试的代码

import pandas as pd
import numpy as np
from docx import Document
key = Document("input1.docx")

for i, row in enumerate(key_table.rows):
    text = (cell.text for cell in row.cells)

    if i == 0:
        keys = tuple(text)
        continue
    row_data = dict(zip(keys, text))
    data.append(row_data)
df = pd.DataFrame(data)

上述代码返回的结构不符合预期,以下是修正方案:


修正后的代码

import pandas as pd
from docx import Document

# 加载Word文档并获取目标表格
doc = Document("input1.docx")
table = doc.tables[0]

# 指定目标列名(匹配期望输出的表头)
target_columns = ["Rows start", "day1", "day2", "day3", "day4", "day5", "day6"]
data = []

# 从第3行开始读取(索引从0开始,跳过前2行)
for idx, row in enumerate(table.rows):
    if idx < 2:
        continue
    # 提取当前行所有单元格的文本,去除多余空格
    cell_contents = [cell.text.strip() for cell in row.cells]
    # 确保单元格数量与列数匹配后,添加到数据列表
    if len(cell_contents) == len(target_columns):
        data.append(dict(zip(target_columns, cell_contents)))

# 构建DataFrame并重置索引
df = pd.DataFrame(data).reset_index(drop=True)
print(df)

代码说明

  1. 手动指定目标列名,规避原表格非结构化表头的干扰
  2. 通过idx < 2直接跳过前两行,精准从第3行读取数据
  3. 初始化data列表,避免未定义报错
  4. 对单元格文本做strip()处理,清除多余空格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:45:34