如何创建数据框并防止在每个数据集的 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)
试一试,看看你会得到什么。
我是第一次在这里发帖。
我目前正在尝试从 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)
试一试,看看你会得到什么。