【问题标题】:python-docx: Parse a table to Panda Dataframepython-docx:将表格解析为 Panda Dataframe
【发布时间】:2020-10-09 04:05:04
【问题描述】:

我正在使用python-docx 库来提取ms word 文档。我可以使用同一个库从 word 文档中获取所有表格。但是,我想将表格解析为熊猫数据框,是否有任何内置功能可用于将表格解析为数据框,或者我必须手动完成? 另外,是否有可能知道表格所在的标题名称?谢谢

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

tabs = document.tables

【问题讨论】:

    标签: python pandas dataframe ms-word python-docx


    【解决方案1】:

    您可以使用以下代码从数据框中的文档中提取表格:

    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 做不到的事情。很棒的工作!!!
    【解决方案2】:

    类似的替代方案(但我没有使用多个表进行测试)。
    这给了我正在寻找的数据框格式:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 2017-09-08
      • 2013-08-03
      • 2018-04-07
      • 1970-01-01
      相关资源
      最近更新 更多