我是第一次在这里发帖。
我目前正试图从word文档中提取表,并将它们放在可以导出为csv的转置数据框架中。
我的问题在于我从以下代码中得到的数据帧:
from docx.api import Document
import pandas as pd
def extract_tables_from_docx(path,output_path,name):
document = Document(path)
data = []
for table in document.tables:
keys = tuple(cell.text for cell in table.rows[0].cells)
for row in table.rows[1:]:
data.append(dict(zip(keys,(cell.text for cell in row.cells))))
df1 = pd.DataFrame(data).T
print(df1)
这是我在调用函数
时输入相关信息时得到的当前数据帧所以问题是,当我想要在NaN的位置填充数据时,我正在添加额外的列来填充下一个数据集的信息。基本上,每个来自循环的新条目都会导致数据向右输入,如果你是这样描述的话。我对Python相当陌生,所以如果这段代码看起来不太好,请道歉。
有谁能帮我解决这个问题吗?如有任何帮助,不胜感激。
编辑:
这是我希望我的数据帧出现的方式
我正在使用的数据集
您的数据是纵向组织的用列而不是行来记录。所以你需要这样写:
from docx.api import Document
import pandas as pd
def extract_tables_from_docx(path):
document = Document(path)
data = []
for table in document.tables:
keys = (cell.text for cell in table.columns[0].cells)
values = (cell.text for cell in table.columns[1].cells)
data.append(dict(zip(keys, values)))
df1 = pd.DataFrame(data).T
print(df1)
试一试,看看你会得到什么。