是否可以打开PDF并使用python pandas读取它或者我是否必须使用pandas剪贴板来实现此功能?
答案 0 :(得分:5)
如果是一次性的,您可以将PDF表格中的数据复制到文本文件中,格式化(使用搜索和替换,Notepad ++宏,脚本),将其另存为CSV文件和加载到熊猫。
如果您需要以可扩展的方式执行此操作,可以尝试使用此产品:http://tabula.technology/。我还没有使用它,所以我不知道它有多好用,但如果你需要它你可以探索它。
答案 1 :(得分:3)
这是不可能的。 PDF是用于打印的数据格式。因此表结构丢失了。幸运的话,您可以使用 pypdf 提取文本并猜测前表格列。
答案 2 :(得分:2)
你可以使用tabula https://blog.chezo.uno/tabula-py-extract-table-from-pdf-into-python-dataframe-6c7acfa5f302
from tabula import read_pdf
df = read_pdf('data.pdf')
我可以在链接中看到更多内容!
答案 3 :(得分:1)
从PDF复制表格数据并粘贴到Excel文件中(通常将其粘贴为单个而不是多个列)。然后使用FlashFill(Excel 2016中提供,不确定早期的Excel版本)将数据分成最初在PDF中查看的列。这个过程快速而简单。然后使用Pandas来处理Excel数据。
答案 4 :(得分:0)
我一直在使用 Camelot (https://camelot-py.readthedocs.io/en/master/)进行一些测试,在许多情况下它都非常有效。如果默认参数不起作用,您可以尝试调整一些参数。
它与 Tabula 类似,但是它使用不同的算法(Tabula使用PDF中的矢量数据并对表格的行进行栅格化; Camelot使用Hough变换),因此您可以尝试同时查找最好的一个。
两者都具有网络版本,因此您可以尝试使用一些示例来确定哪个是最适合您的应用程序。
答案 5 :(得分:0)
有tabula
的{{1}}新版本
tabula-py
pip install tabula-py
方法的工作方式与旧版本相同,文档位于此处:
https://pypi.org/project/tabula-py/
答案 6 :(得分:-1)
当我这样做时
from tabula import read_pdf
import pandas as pd
df = read_pdf('C:\\Users\\sreeraj.va\\Desktop\\kkrvspnj.pdf')
df.shape
>> (68, 10)
但我的df是(20000,10)的形状,在笔记本中它只显示第一页的形状。为什么这样?