我正在尝试访问"收益率曲线数据"可在this page上找到。下面的代码执行此操作,但我正在尝试将获取的压缩CSV文件转换为Dataframe。当我想将压缩文件转换为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
谢谢
答案 0 :(得分:4)
zipfile.namelist
只返回一个文件名列表 - 它实际上并不提取任何内容(https://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.namelist)。
这应该有效:
df = pd.read_csv(zipfile.open(zipfile.namelist()[0]))