使用pandas下载CSV到本地时报UnicodeDecodeError错误的原因及解决方法
错误产生原因
- 核心原因是目标CSV文件的编码格式与pandas默认使用的
utf-8编码不匹配:你调用的美国人口普查局公开数据集使用latin-1(即iso-8859-1)编码存储,其中包含了西班牙语字符ñ(对应字节为0xf1)等utf-8无法直接解析的特殊字符,因此触发解码失败。 - 你现有代码还存在一处语法错误:选取多列时需要用双层方括号包裹列名列表,当前的单层方括号写法会额外抛出KeyError。
最简有效解决办法
仅需给pd.read_csv方法新增encoding='latin-1'参数指定编码,同时修正多列选取的语法即可正常运行,修改后完整代码如下:
import pandas as pd url = 'https://www2.census.gov/programs-surveys/popest/datasets/2010-2019/counties/totals/co-est2019-alldata.csv' # 指定文件编码为latin-1解决解码错误 df = pd.read_csv(url, encoding='latin-1') # 修正多列选取语法,使用双层方括号 df = df[['SUMLEV', 'REGION', 'DIVISION', 'STATE', 'COUNTY', 'STNAME', 'CTYNAME', 'POPESTIMATE2019']] df.to_csv('C:\localpath.csv', index=False)
内容的提问来源于stack exchange,提问作者FormidableData
相关产品推荐
相关产品推荐

