如何请求一个 zip 文件,提取它,然后从 csv 文件创建熊猫数据框?
Posted
技术标签:
【中文标题】如何请求一个 zip 文件,提取它,然后从 csv 文件创建熊猫数据框?【英文标题】:How do I request a zipfile, extract it, then create pandas dataframes from the csv files? 【发布时间】:2016-09-19 17:41:45 【问题描述】:从 Sean Lahman 的棒球数据库中加载这些 CSV 文件。对于这项任务,我们将使用“Salaries.csv”和“Teams.csv”表。将这些表读入 pandas DataFrame 并显示每个表的头部。
#Here's the code I have so far:
import requests
import io
import zipfile
url = 'http://seanlahman.com/files/database/lahman-csv_2014-02-14.zip
r = requests.get(url,auth=('user','pass'))
#These were lines of code I looked up but am not sure to use:
#with zipfile.ZipFile('/path/to/file', 'r') as z:
#f = z.open('member.csv')
#table = pd.io.parsers.read_table(f, ...)
#salariesData = pd.read_csv('Salaries.csv')
#teamsData = pd.read_csv('Teams.csv')
【问题讨论】:
这里一般不鼓励家庭作业问题。 【参考方案1】:请求返回一个字节文件,所以首先将字节转换为zip文件:
mlz = zipfile.ZipFile(io.BytesIO(r.content))
要查看压缩文件中的内容,请输入:
mlz.namelist()
然后就可以提取和读取索引对应的CSV,x:
df1 = pd.read_csv(mlz.open(mlz.namelist()[0]))
df2 = pd.read_csv(mlz.open(mlz.namelist()[1]))
在您的具体情况下,这可能是:
salariesData = pd.read_csv(mlz.open('Salaries.csv'))
teamsData = pd.read_csv(mlz.open('Teams.csv'))
(所有这些 ^ 假设您使用的是 Python 3.x)
【讨论】:
以上是关于如何请求一个 zip 文件,提取它,然后从 csv 文件创建熊猫数据框?的主要内容,如果未能解决你的问题,请参考以下文章
从 Python3 中的 .zip 文件中提取和读取 [重复]
下载一个 zip 文件并使用 Python3 将其提取到内存中
如何提取多个 zip 文件并在 R 中读取这些 csv? [复制]