将压缩的 CSV 文件转换为 Dataframe

use*_*983 2 python pandas

我正在尝试访问此页面上提供的“收益率曲线数据” 。下面的代码执行此操作,但我随后尝试将获得的压缩 CSV 文件转换为 Dataframe。当我想将压缩文件转换为数据帧时,下面的代码适用于该部分。df = pd.DataFrame.from_csv(zipfile.namelist())我在该行收到错误df = pd.DataFrame.from_csv(zipfile.namelist())。我想知道如何规避这个问题。

import urllib, urllib2
import csv
from StringIO import StringIO
import pandas as pd
import os
from zipfile import ZipFile
from pprint import pprint, pformat

my_url = 'http://www.bankofcanada.ca/stats/results/csv'
data = urllib.urlencode({"lookupPage": "lookup_yield_curve.php",
                         "startRange": "1986-01-01",
                         "searchRange": "all"})
request = urllib2.Request(my_url, data)
result = urllib2.urlopen(request)
zipdata = result.read()
zipfile = ZipFile(StringIO(zipdata))

df = pd.DataFrame.from_csv(zipfile.namelist())
print df
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 5

zipfile.namelist只是返回文件名列表 - 它实际上并不提取任何内容(https://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.namelist)。

这应该有效:

df = pd.read_csv(zipfile.open(zipfile.namelist()[0]))
Run Code Online (Sandbox Code Playgroud)