我有一个包含表格的 pdf 文件,我想使用 tabula 将其作为数据框读取。但只有第一个 PDF 页面有列标题。第 1 页之后的数据帧标题成为信息的第一行。有什么方法可以将页眉从第 1 页数据帧添加到其余数据帧?提前致谢。非常感谢!
最佳答案
可以通过以下步骤解决这个问题:
阅读 PDF:
tables = tabula.read_pdf(filename, pages='all', pandas_options={'header': None})
这将创建一个数据框列表,将页面作为列表中的数据框。
pandas_options={'header': None} is used not to take first row as header in the dataframe.
因此,第一页的标题将是表列表中数据框的第一行。
在变量中保存 header :
cols = tables[0].values.tolist()[0]
这将创建一个名为 cols 的列表,表列表中第一个 df 的第一行是我们的标题。
删除第一页的第一行:
表[0] = 表[0].iloc[1:]
这一行将删除表列表中第一个 df(page) 的第一行,因为我们已经存储在一个变量中,我们不再需要它了。
为所有页面提供标题:
对于表中的 df: df.columns = cols
此循环将遍历每个 dfs(页面)并为它们提供我们存储在 cols 变量中的标题。
因此,第 1 页数据帧的标题将提供给其余数据帧(页面)。
您也可以将其连接到一个数据框中
import pandas as pd
和:
df_Final = pd.concat(tables)
希望这对你有帮助,感谢这个机会。
关于python - 使用 tabula.py 从 PDF 格式读取没有标题的表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65626278/