我正在尝试在 Pandas 中使用read_csv从FTP服务器读取压缩文件。压缩文件仅包含一个文件(根据需要)。

这是我的代码:

pd.read_csv('ftp://ftp.fec.gov/FEC/2016/cn16.zip', compression='zip')

我收到此错误:
AttributeError: addinfourl instance has no attribute 'seek'

我在 Pandas 18.1和19.0中都收到此错误。我是否缺少某些东西,或者这可能是一个错误?

最佳答案

尽管我不太确定为什么会收到错误,但是可以通过使用urllib2打开url并将数据写入内存中的二进制流中来解决该问题,如here所示。另外,我们必须指定正确的分隔符,否则我们将收到另一个错误。

import io
import urllib2 as urllib
import pandas as pd

r = urllib.urlopen('ftp://ftp.fec.gov/FEC/2016/cn16.zip')
df = pd.read_csv(io.BytesIO(r.read()), compression='zip', sep='|', header=None)

至于错误本身,我认为 Pandas 正在尝试在下载url内容之前使用“zip文件”上的seek(因此它并不是真正的zip文件),这将导致该错误。

关于python - 在zip压缩中使用pandas read_csv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40744027/

10-14 17:44
查看更多