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

Python:如何避免DataFrame导出CSV时的字符异常与格式转换问题?

解决Pandas导出CSV后Excel打开的编码与公式识别问题

针对你遇到的两个问题,提供两种可靠的解决方案:

方法一:导出时用双引号包裹所有字段(推荐,无需修改原始数据)

通过指定编码和引用规则,同时解决乱码和公式解析问题:

import pandas as pd
import csv

# 创建你的DataFrame
df = pd.DataFrame()
df['Dates'] = ['Day 1', '10pm', 'Day 2', '7pm', 'Day 3', '6pm']
df['Data'] = ['7½o-20', '-278/+222', '8o-15', '-109/-101', '8½u-15', '-195/+162']

# 导出CSV
df.to_csv(
    'output.csv',
    encoding='utf-8-sig',  # 带BOM头的UTF-8,让Excel正确识别特殊字符
    index=False,           # 不导出索引列
    quoting=csv.QUOTE_ALL # 用双引号包裹所有字段,强制Excel识别为文本
)

原理:

  • utf-8-sig编码:解决Excel默认用系统编码打开UTF-8文件导致的乱码(如½前出现Â);
  • csv.QUOTE_ALL:所有字段用双引号包裹,Excel会将带双引号的内容当作纯文本,不会解析为公式计算。

方法二:给文本添加单引号前缀(强制Excel识别为文本)

如果不想用双引号包裹,可以给容易被识别为公式的字段添加单引号前缀:

import pandas as pd

# 创建你的DataFrame
df = pd.DataFrame()
df['Dates'] = ['Day 1', '10pm', 'Day 2', '7pm', 'Day 3', '6pm']
df['Data'] = ['7½o-20', '-278/+222', '8o-15', '-109/-101', '8½u-15', '-195/+162']

# 给Data列的每个内容添加单引号前缀(Excel不会显示这个单引号,只会当作文本标记)
df['Data'] = df['Data'].apply(lambda x: f"'{x}")

# 导出CSV
df.to_csv(
    'output.csv',
    encoding='utf-8-sig',
    index=False,
    quoting=csv.QUOTE_NONE # 关闭自动引用,避免多余引号
)

原理:

  • 单引号前缀是Excel的文本标记,会强制将内容识别为纯文本,不会解析为公式;
  • 同样用utf-8-sig编码解决乱码问题。

两种方法导出后用Excel打开,都能保持数据与编辑器中显示一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:23:16