Pandas写入DataFrame至CSV遇UnicodeEncodeError问题求助
解决方案
你的问题出在手动打开文件时未指定编码,导致系统默认的charmap编码和to_csv中设置的utf-8编码冲突。以下是几种可行的解决办法:
1. 修复手动文件打开的编码设置
在open()函数里明确指定与to_csv一致的编码,避免编码不匹配:
def data_to_csv(data, data2): encode = 'utf-8' with open('data.csv', 'w', encoding=encode) as data_csv: data.to_csv(path_or_buf=data_csv, encoding=encode) with open('data2_data.csv', 'w', encoding=encode) as data2_csv: data2.to_csv(path_or_buf=data2_csv, encoding=encode)
2. 更简洁的写法(推荐)
直接使用to_csv的路径参数,让Pandas自行处理文件打开逻辑,减少编码冲突概率:
def data_to_csv(data, data2): encode = 'utf-8' data.to_csv('data.csv', encoding=encode) data2.to_csv('data2_data.csv', encoding=encode)
3. 尝试备选编码
如果utf-8仍无法解决问题,可以试试这些针对性编码:
- utf-8-sig:适配Windows环境,能让Excel正确识别UTF-8编码的CSV文件
- cp1252:Windows系统常用单字节编码,兼容大部分西欧字符
- gb18030:覆盖几乎所有中文字符,适合中文数据集
示例:
data.to_csv('data.csv', encoding='utf-8-sig')
4. 兜底处理特殊字符(不推荐,会丢失/替换字符)
如果必须完成导出且可接受少量字符损失,可添加errors参数:
data.to_csv('data.csv', encoding='utf-8', errors='replace') # 用?替换无法编码的字符 # 或者 data.to_csv('data.csv', encoding='utf-8', errors='ignore') # 直接忽略无法编码的字符
内容的提问来源于stack exchange,提问作者Buzzkillionair
相关产品推荐
相关产品推荐

