You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas读取csv后筛选数据报UnicodeDecodeError错误如何解决?

问题原因

  • pandas读取csv时默认采用延迟加载策略,不会一次性解码所有单元格的内容,所以读文件阶段不会触发编码错误,只有当操作(筛选、遍历等)触碰到包含非法编码的单元格时,才会抛出解码异常。
  • 报错信息中的0xde字节是Latin-1编码中对应Þ字符的字节,你的csv文件实际编码不是utf-8,大概率是Latin-1、GBK或者cp1252这类西欧编码。

解决方法

方案1:读取文件时指定正确编码

最稳妥的方式是读取阶段就指定正确的编码,避免后续操作触发问题,优先试latin1或者cp1252,这两个对西欧语言生成的csv兼容性很高:

import pandas as pd
# 优先试cp1252,是Windows系统常用的西欧编码
df = pd.read_csv("online_retail.csv", encoding="cp1252")
# 如果cp1252不行,试latin1,这个编码可以兼容所有单字节内容,不会报解码错
# df = pd.read_csv("online_retail.csv", encoding="latin1")

方案2:读取时忽略解码错误

如果不需要保留特殊字符,也可以在读取时设置错误处理策略为忽略,直接丢弃非法编码的字节:

df = pd.read_csv("online_retail.csv", encoding="utf-8", encoding_errors="ignore")

操作验证

读取完成后可以先执行全量遍历确认没有隐藏的编码问题,再做后续操作:

# 遍历所有单元格触发解码,确认无报错
df = df.applymap(str)
# 再测试筛选操作
df[df['Quantity'] > 500]

内容的提问来源于stack exchange,提问作者Jack 007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:54:07