如何在每个数据集的for循环期间创建数据框架并防止创建新列和额外行



我是第一次在这里发帖。

我目前正试图从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)

试一试,看看你会得到什么。

相关内容

  • 没有找到相关文章

最新更新