为什么我使用tabula-py后得到的是一个列表而不是数据框?

5

输出

我想要处理PDF文件,特别是其中的表格。我编写了以下代码:

import pandas as pd
import numpy as np
import tabula
from tabula import read_pdf
tab= tabula.read_pdf('..\PDFs\Ala.pdf',encoding='latin-1', pages ='all')
tab

但我得到了一个值的列表,像这样:

[    Nombres  Edad Ciudad
0    Noelia    20   Lima
1  Michelie    45   Lima
2    Ximena    18   Lima
3    Miguel    43   Lima]

我无法对其进行分析,因为它不是数据框架。这只是一个例子,真实的PDF文件包含文本和多个页面之间的表格。

所以,请有人帮我解决这个问题吗?


print(type(tab)) 显示什么? - Martin Evans
我得到了<class 'list'>。 - Maria Fernanda
那么,我可以将它转换成数据框吗? - Maria Fernanda
1
尝试使用 tab[0] 可能是一个数据框。 - Martin Evans
2个回答

6

tabula 应该返回一个 Pandas 数据框的列表,每个数据框对应 PDF 中找到的一个表格。您可以按如下方式显示(并使用)它们:

import pandas as pd
import numpy as np
import tabula
from tabula import read_pdf

dfs = tabula.read_pdf('..\PDFs\Ala.pdf', encoding='latin-1', pages='all')
print(f"Found {len(dfs)} tables")

# display each of the dataframes
for df in dfs:
    print(df.size)
    print(df)

1
这正是我需要的!谢谢!现在我可以分析数据了!太棒了! - Maria Fernanda
2
将dfs合并为一个df,请使用df = pd.concat(dfs)。既然您标记它为csv,那么也让我们这样做:df.to_csv(filepath, index=False)。我经常删除索引。 - Shane S
2
超级@Martin Evans - tsuresh97

1

tabula返回一个Pandas DataFrame列表。但是我们可以使用以下语句将此列表转换为Pandas DataFrame。

import tabula
import pandas

tab = pandas.DataFrame(tabula.read_pdf('..\PDFs\Ala.pdf', pages ='all')[0])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接