将压缩的CSV文件转换为Dataframe

时间:2015-06-17 18:35:58

标签: python pandas

我正在尝试访问"收益率曲线数据"可在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

谢谢

1 个答案:

答案 0 :(得分:4)

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

这应该有效:

df = pd.read_csv(zipfile.open(zipfile.namelist()[0]))