是否可以从URL读取仅包含.dta
文件的.zip文件?
例如,https://www.federalreserve.gov/econres/files/scfp2016s.zip包含一个文件:rscfp2016.dta
,但pandas.read_stata
不适用于它:
import pandas as pd
pd.read_stata('https://www.federalreserve.gov/econres/files/scfp2016s.zip')
值错误:给定Stata文件的版本不是104、105、108、111(Stata 7SE)、113(Stata 8/9)、114(Stata 10/11)、115(Stata 12)、117(Stata 13)或118(Stata 14)
read_csv
如果zip只包含csv,则支持通过默认推断压缩的compression
参数读取压缩文件。read_stata
缺少此选项。我可以下载并解压文件,然后读取它,但这是混乱的。
!wget https://www.federalreserve.gov/econres/files/scfp2016s.zip
!unzip scfp2016s.zip
df = pd.read_stata('rscfp2016.dta')
有更好的办法吗?
最佳答案
您可以尝试以下请求:
import io
import zipfile
import requests
response = requests.get('https://www.federalreserve.gov/econres/files/scfp2016s.zip')
a = zipfile.ZipFile(io.BytesIO(response.content))
b = a.read(a.namelist()[0])
pd.read_stata(io.BytesIO(b))
关于python - 从URL读取压缩的Stata文件到 Pandas ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59122596/