python-docx:将 table 解析为 Panda Dataframe
python-docx: Parse a table to Panda Dataframe
我正在使用 python-docx
库来提取 ms word 文档。我可以使用同一个库从 word 文档中获取所有 table。但是,我想将 table 解析为熊猫数据框,是否有任何 built-in 功能可用于将 table 解析为数据框,或者我必须这样做它手动?
另外,是否有可能知道 table 所在的标题名称?谢谢
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 变量中获取所有表格。
类似的替代方案(但我没有使用多个表进行测试)。
这给了我正在寻找的数据帧格式:
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)
我正在使用 python-docx
库来提取 ms word 文档。我可以使用同一个库从 word 文档中获取所有 table。但是,我想将 table 解析为熊猫数据框,是否有任何 built-in 功能可用于将 table 解析为数据框,或者我必须这样做它手动?
另外,是否有可能知道 table 所在的标题名称?谢谢
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 变量中获取所有表格。
类似的替代方案(但我没有使用多个表进行测试)。
这给了我正在寻找的数据帧格式:
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)