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

pandas用to_csv导出pd.cut分箱的区间数据时负号乱码如何解决

问题原因

你看到的乱码是编码不匹配导致的:
pd.cut生成的区间标签默认使用en dash(短破折号–,Unicode编码U+2013),不是ASCII标准减号-。pandas默认以UTF-8编码导出CSV时,这个特殊破折号会被编码为3个字节,而Excel默认用系统本地编码(中文系统一般是GBK/ANSI)打开CSV,解码错位就出现了–乱码。

解决方案

方案1:调整导出编码(最简单,无需修改原始数据)

导出CSV时指定编码为utf_8_sig,该编码带UTF-8字节序标记,Excel可自动识别不会乱码:

df.to_csv('导出文件名.csv', encoding='utf_8_sig', index=False)

方案2:替换特殊破折号为标准减号(兼容性最好)

从根源把所有特殊短破折号替换为ASCII减号,任意编码打开都不会乱码:

  1. 可以在分箱时手动指定标签,避免生成特殊破折号:
# 示例分箱代码,手动指定标签用标准减号
bins = [0,3,4,5,6,7,8,9,10, float('inf')]
labels = ['0.00','3.0 - 3.99','4.0 - 4.99','5.0 - 5.99','6.0 - 6.99','7.0 - 7.99','8.0 - 8.99','9.0 - 9.99','10.0+']
df['Trap1_Odds'] = pd.cut(df['原始数值列'], bins=bins, labels=labels)
  1. 也可以分箱完成后批量替换全表的特殊破折号:
df = df.replace('–', '-', regex=False)

方案3:手动调整Excel打开方式

如果已经导出了UTF-8编码的CSV,不要直接双击打开,按以下步骤导入:

  • 打开Excel,点击「数据」选项卡 → 「从文本/CSV导入」
  • 选择你的CSV文件,编码选择「UTF-8」,导入即可正常显示。

内容的提问来源于stack exchange,提问作者chuky pedro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:45:03