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

如何导出Pandas DataFrame到CSV时避免科学计数法显示?

解决方案

要解决Excel打开CSV时将带前导零的数字字符串转为科学计数法的问题,核心是让Excel识别这类内容为文本格式而非数值。以下是精准且无需手动修改CSV的实现方法:

步骤1:读取Excel时保留原字符串格式

读取Excel文件时,必须指定目标列为字符串类型,避免Pandas自动将带前导零的字符串转为数值导致前导零丢失:

import pandas as pd
import csv
import re

# 替换'目标列名'为实际列名,确保该列以字符串类型读取
df = pd.read_excel('input.xlsx', dtype={'目标列名': str})

步骤2:为带前导零的数字字符串添加Excel文本标识

对目标列中符合条件的单元格(纯数字字符串且以0开头、长度大于1),用="内容"格式包裹。Excel打开时会自动解析为文本内容,不会显示外层的=和"",同时避免转为科学计数法:

def format_leading_zero(content):
    # 匹配以0开头且后续为数字的字符串(排除单个0的情况)
    if re.fullmatch(r'0\d+', content):
        return f'="{content}"'
    # 非目标内容直接返回原字符串
    return content

# 将处理逻辑应用到目标列
df['目标列名'] = df['目标列名'].apply(format_leading_zero)

步骤3:导出CSV时避免额外转义

导出CSV时关闭自动引号功能,防止Pandas对我们手动添加的""进行额外转义:

df.to_csv('output.csv', index=False, quoting=csv.QUOTE_NONE, escapechar='\\')

原理说明

  • ="0123456789"格式是Excel的特殊语法,会被识别为“显示引号内的文本”,既保留原字符串内容,又强制Excel以文本格式解析,不会触发科学计数法转换。
  • 仅对带前导零的纯数字字符串做处理,不影响列中的非数值内容或正常数字(如"123"、"abc123"等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:04:56