调试同事脚本遇异常:DataFrame无法打印键值但可存CSV
解决Pandas打印DataFrame时的UnicodeEncodeError问题
快速临时修复
- 在脚本开头添加以下代码,强制标准输出使用utf-8编码:
import sys sys.stdout.reconfigure(encoding='utf-8')
之后再执行print(df)或print(df.keys())就能正常显示非ASCII字符。
- 或者直接在打印时手动处理编码:
# 打印整个DataFrame print(df.to_string().encode('utf-8').decode('utf-8')) # 打印键值 print(str(df.keys()).encode('utf-8').decode('utf-8'))
永久解决(针对终端环境)
- Linux/macOS:编辑你的shell配置文件(比如
~/.bashrc或~/.zshrc),添加一行:
export PYTHONIOENCODING=utf-8
保存后执行source ~/.bashrc(对应你的配置文件)生效,之后所有Python脚本的终端输出都会默认用utf-8编码。
- Windows:打开命令提示符,先执行以下命令再运行脚本:
set PYTHONIOENCODING=utf-8
或者直接在系统环境变量中添加PYTHONIOENCODING变量,值设为utf-8,永久生效。
问题原因
df.to_csv()默认使用utf-8编码写入文件,天然支持非ASCII字符;而print操作会使用当前终端的默认编码输出,如果终端被设置为ASCII编码,就无法处理DataFrame里的非ASCII字符,从而抛出UnicodeEncodeError。
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

