python - 使用 tabula.py 从 PDF 格式读取没有标题的表格

标签 python dataframe pdf

我有一个包含表格的 pdf 文件,我想使用 tabula 将其作为数据框读取。但只有第一个 PDF 页面有列标题。第 1 页之后的数据帧标题成为信息的第一行。有什么方法可以将页眉从第 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.

因此,第一页的标题将是表列表中数据框的第一行。

  1. 在变量中保存 header :

    cols = tables[0].values.tolist()[0]

这将创建一个名为 cols 的列表,表列表中第一个 df 的第一行是我们的标题。

  1. 删除第一页的第一行:

    表[0] = 表[0].iloc[1:]

这一行将删除表列表中第一个 df(page) 的第一行,因为我们已经存储在一个变量中,我们不再需要它了。

  1. 为所有页面提供标题:

    对于表中的 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/

相关文章:

python - 如何从某些列为 True 的组中返回上一个元素

python - 如何在 main.py 中捆绑 Kivy 代码

python - 如何通过部分标签过滤pandas数据框列

python - 语法错误 : unexpected EOF while parsing (using . 格式())

python - 如何在 Pandas 数据框中添加另一个配对列?

asp.net-mvc - 如何在 Rotativa PDF 中的页眉或页脚上设置图像

html - HTML5 Canvas 中的 PDF 渲染

c# - 在 .NET C# 中以编程方式将 SVG 嵌入到 PDF 中

python - 在 Python 中使用 date_range() 追加

python - PIL 在特定点放大图像