Python 从zip文件中的csv创建数据帧
我正在尝试读取熊猫数据框中的WGIData.csv文件。WGIData.csv存在于我从该url下载的zip文件中 但当我尝试读取时,它抛出错误BadZipFile:文件不是zip文件 这是我的python代码Python 从zip文件中的csv创建数据帧,python,pandas,unzip,zipfile,Python,Pandas,Unzip,Zipfile,我正在尝试读取熊猫数据框中的WGIData.csv文件。WGIData.csv存在于我从该url下载的zip文件中 但当我尝试读取时,它抛出错误BadZipFile:文件不是zip文件 这是我的python代码 import pandas as pd from urllib.request import urlopen from zipfile import ZipFile class Get_Data(): def Return_csv_from_zip(self, url):
import pandas as pd
from urllib.request import urlopen
from zipfile import ZipFile
class Get_Data():
def Return_csv_from_zip(self, url):
self.zip = urlopen(url)
self.myzip = ZipFile(self.zip)
self.myzip = self.zip.extractall(self.myzip)
self.file = pd.read_csv(self.myzip)
self.zip.close()
return self.file
url = 'http://databank.worldbank.org/data/download/WGI_csv.zip'
data = Get_Data()
df = data.Return_csv_from_zip(url)
urlopen()
不返回可以发送到ZipFile()
的对象(HTTPResponse
)。您可以read()
响应并使用io.BytesIO()
执行所需操作:
In []:
from io import BytesIO
z = urlopen('http://databank.worldbank.org/data/download/WGI_csv.zip')
myzip = ZipFile(BytesIO(z.read())).extract('WGIData.csv')
pd.read_csv(myzip)
Out[]:
Country Name Country Code Indicator Name Indicator Code 1996 \
0 Anguilla AIA Control of Corruption: Estimate CC.EST NaN
1 Anguilla AIA Control of Corruption: Number of Sources CC.NO.SRC NaN
2 Anguilla AIA Control of Corruption: Percentile Rank CC.PER.RNK NaN
3 Anguilla AIA Control of Corruption: Percentile Rank, Lower ... CC.PER.RNK.LOWER NaN
4 Anguilla AIA Control of Corruption: Percentile Rank, Upper ... CC.PER.RNK.UPPER NaN
5 Anguilla AIA Control of Corruption: Standard Error CC.STD.ERR NaN
...
您的zip有两个文件:
['WGIData.csv','WGISeries.csv']
这可能是问题所在。这是一个不错的zip文件,我使用winrar@Achampion提取了它。那么我需要做什么呢?@coldspeedi只想阅读WGIData.csv这样的内容可能会有帮助:有没有不指定文件名的方法呢?您可以extractall()
提取zip文件的所有内容,或者您可以获取名称列表()
并遍历名称。