【发布时间】:2022-01-13 19:49:58
【问题描述】:
我有一个食谱 PDF 文件,其中包含各种表格,这些表格描述了我正在使用的一个数据集中使用的变量。由于实际数据包含我需要查找的值,因此我需要从本食谱中的所有表中创建多个 CSV 输出文件。
例如,在这个 PDF 文件的第 15 页,我们有一个如下表,我需要从中提取 pandas 数据框,以便我可以将其保存为 CSV 文件以供以后使用。我不关心这些表中的“总计”,因为我只需要 value 和 label 字段。
我尝试通过在 Python 中使用 camelot 库来解决这个问题 -
import camelot
# try extracting table from 1 of the pages
tables = camelot.read_pdf('/Users/Downloads/TEDS-A-2018-DS0001-info-codebook_v1.pdf', pages = '12')
# check data
>>> type(tables)
<class 'camelot.core.TableList'>
>>> len(tables)
0
我不确定为什么在输出中没有得到任何表格。非常感谢任何帮助。
更新 - 我也尝试了 tabula 库,但是我只得到奇数行而不是表中的偶数行。这是我的试用代码 -
pdf_loc = 'csvs/TEDS-A-2018-DS0001-info-codebook_v1.pdf'
list_of_dataframs = tb.read_pdf(input_path=pdf_loc, pages='all')
number_of_dfs = len(list_of_dataframs)
print('first df in list')
list_of_dataframs[0]
可以在here找到PDF说明书
【问题讨论】:
-
不是一个答案,但如果这个包没有按预期工作,另一个值得尝试的 PDF 提取包是
tabula。将 PDF 表读入 DataFrame。 Linked here. -
@S3DEV - 是否有可能有一个基于我的食谱的工作示例并解析出 1 页?
-
谢谢,非常感谢。我还注意到
tabula库,但我无法解析整个表。我只从特定页面上的表中获取奇数行。 -
使用制表符,在阅读pdf时尝试添加
lattice=True。以前这对我有用。
标签: python pandas dataframe pdf