我正在尝试在 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/