这是我感兴趣的数据。
http://fenixservices.fao.org/faostat/static/bulkdownloads/Production_Crops_E_All_Data.zip
它包含3个文件:
我想用熊猫下载zip并从名为Production_Crops_E_All_Data.csv的1个文件创建DataFrame
import pandas as pd
url="http://fenixservices.fao.org/faostat/static/bulkdownloads/Production_Crops_E_All_Data.zip"
df=pd.read_csv(url)
熊猫可以下载文件,可以使用zip,当然也可以使用csv文件。但是,如何处理包含多个文件的1个特定文件?
现在我得到错误
ValueError :(在压缩的zip文件%s中找到多个文件)
这篇文章没有回答我的问题,因为我有1个zip文件中有多个文件以pandas DataFrame格式读取压缩文件
编辑:更新为python3 StringIO到io.StringIO
编辑:更新了urllib的导入,将StringIO的用法更改为BytesIO。另外,您的CSV文件不是utf-8编码,我尝试了latin1并成功。
尝试这个
from zipfile import ZipFile
import io
from urllib.request import urlopen
import pandas as pd
r = urlopen("http://fenixservices.fao.org/faostat/static/bulkdownloads/Production_Crops_E_All_Data.zip").read()
file = ZipFile(io.BytesIO(r))
data_df = pd.read_csv(file.open("Production_Crops_E_All_Data.csv"), encoding='latin1')
data_df_noflags = pd.read_csv(file.open("Production_Crops_E_All_Data_NOFLAG.csv"), encoding='latin1')
data_df_flags = pd.read_csv(file.open("Production_Crops_E_Flags.csv"), encoding='latin1')
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句