如何读取Word非结构化表格第3行起数据并构建正确DataFrame?
读取Word非结构化表格并构建指定格式DataFrame
我的Word文档里有个非结构化表格,需要读取从第3行开始的数据,构建成格式正确的DataFrame。表格样式如下:
期望输出
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)
代码说明
- 手动指定目标列名,规避原表格非结构化表头的干扰
- 通过
idx < 2直接跳过前两行,精准从第3行读取数据 - 初始化
data列表,避免未定义报错 - 对单元格文本做
strip()处理,清除多余空格
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

