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

How to create a Data frame and prevent creation of new columns and additional rows during a for loop for each dataset

我是第一次在这里发帖。

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

This is the current data frame I get when I input the relevant information when calling the function

所以问题是,当我希望在 NaN 所在的位置填充数据时,我正在添加额外的列来填充下一个数据集的信息。如果您是这样描述的话,基本上循环中的每个新条目都会导致数据输入到右侧。我是 Python 的新手,如果这段代码看起来不太好,我深表歉意。

任何人都可以帮助我解决这个问题吗?感谢任何帮助。

编辑:

This is how I expect my data frames to appear

The dataset I'm using

您的数据是“垂直”组织的,记录在列而不是行中。所以你需要这样的东西:

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)

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