Python-docx: 将表格解析为Panda数据框

6

我正在使用 python-docx 库来提取微软word文档。我能够通过使用同一库获得文档中的所有表格。然而,我想将表格解析成panda数据框,是否有任何内置功能可用于将表格解析为数据框,或者我必须手动完成?此外,有没有可能知道表格所在的标题名称?谢谢。

from docx import Document
from docx.shared import Inches
document = Document('test.docx')

tabs = document.tables
2个回答

16
您可以使用以下代码从文档中提取表格到数据框中:
from docx import Document
import pandas as pd
document = Document('test.docx')

tables = []
for table in document.tables:
    df = [['' for i in range(len(table.columns))] for j in range(len(table.rows))]
    for i, row in enumerate(table.rows):
        for j, cell in enumerate(row.cells):
            if cell.text:
                df[i][j] = cell.text
    tables.append(pd.DataFrame(df))
print(tables)

您可以从表变量中获取所有表格。


这绝对是我见过的最好的答案,这段漂亮的代码做到了Camlot或Tabular都无法做到的事情。太棒了! - Somesh Gupta

1

有一个类似的替代方案(但我没有测试使用多个表格)。
这给了我我所需要的数据框格式:

for table in firstdoc.tables:
    doctbls=[]
    tbllist=[]
    rowlist=[]
    for i, row in enumerate(table.rows):
        for j, cell in enumerate(row.cells):
            rowlist.append(cell.text)
        tbllist.append(rowlist)
        rowlist=[]
    doctbls=doctbls+tbllist

finaltables=pd.DataFrame(doctbls)     
display(finaltables)

@abdulsaboor,您能否帮忙解决这个问题:https://dev59.com/ONH7oIgBc1ULPQZFgFxj - sunny babau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接