Pandas导出DataFrame至CSV时Excel打开异常,如何设置编码?
解决CSV用Excel打开时科学计数法显示异常的问题
你遇到的根本问题不是编码错误,而是Excel会自动把带E的字符串(比如30219E103)识别成科学计数法,导致内容变形——这和你尝试的utf-8/utf-16编码无关。以下是两种直接有效的解决方法:
方法一:给字符串列加单引号前缀
在导出前给code列的每个值加上单引号,强制Excel将其识别为文本:
# 给code列添加单引号前缀,规避科学计数法识别 df1['code'] = "'" + df1['code'] # 用带BOM的utf-8编码导出,避免Excel乱码 df1.to_csv('output.csv', encoding='utf-8-sig', index=False)
打开CSV时,Excel会自动忽略开头的单引号,正常显示原始的code值。
方法二:用CSV引号规则强制文本格式
借助csv模块的引用参数,给所有非数值列加上双引号,让Excel按文本解析:
from csv import QUOTE_NONNUMERIC # 导出时对非数值列强制添加双引号 df1.to_csv('output.csv', encoding='utf-8-sig', index=False, quoting=QUOTE_NONNUMERIC)
这种方式不需要修改原始数据,通过CSV格式规则就能让Excel正确识别字符串。
内容的提问来源于stack exchange,提问作者superunknown
相关产品推荐
相关产品推荐

