pythondocx:将表解析为Panda数据帧

pythondocx:将表解析为Panda数据帧,python,pandas,dataframe,ms-word,python-docx,Python,Pandas,Dataframe,Ms Word,Python Docx,我正在使用pythondocx库来提取ms-word文档。我可以使用同一个库从word文档中获取所有表。但是,我想将表解析为panda数据帧,是否有任何内置功能可以用于将表解析为数据帧,或者我必须手动执行? 另外,是否有可能知道表格所在的标题名称?多谢各位 from docx import Document from docx.shared import Inches document = Document('test.docx') tabs = document.tables 您可以使用以

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

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

tabs = document.tables

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

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)

您可以从tables变量获取所有表

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

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)
您可以从tables变量获取所有表

类似的替代方案(但我没有使用多个表进行测试)。
这给了我想要的数据帧格式:

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)
类似的替代方案(但我没有使用多个表进行测试)。
这给了我想要的数据帧格式:

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)