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

处理超长数字字符串时,如何避免Pandas.to_excel的数据丢失

问题描述

我的输入CSV文件内容如下:

id1,id2
233924749247492472,9284372492472497294749
298347230474308444,9472943274947429427477

我需要将这个文件读取为DataFrame后,写入.xlsx文件,但不能丢失数据。

已尝试的代码

  • 尝试1:
df2 = pd.read_csv(path,  sep=Delimiter, float_precision=None )
pd.options.display.float_format = '{:.1f}'.format
df2.to_excel(filepath, index=False)
  • 尝试2:
df2 = pd.read_csv(path, sep=delimiter)
writer = pd.ExcelWriter(path, engine=None)
df3.to_excel(writer, index=False)
  • 尝试3:
df2 = pd.read_csv(path, sep=delimiter)
df3.to_excel(path, index=False)

问题现象

每次运行后得到的Excel文件结果都一样,第一列数据出现精度丢失:

id1id2
2339247492474930009284372492472497294749
2983472304743090009472943274947429427477

解决方案

问题出在大整数被pandas默认解析为浮点数,导致精度丢失。解决办法是读取CSV时指定列的类型为字符串,避免自动转换:

方法1:指定dtype参数

import pandas as pd

# 读取时指定id1和id2为字符串类型
df = pd.read_csv(path, sep=',', dtype={'id1': str, 'id2': str})
# 写入Excel
df.to_excel(filepath, index=False)

方法2:使用converters参数

如果需要更灵活的转换,可以用converters对指定列处理:

import pandas as pd

# 转换指定列为字符串
df = pd.read_csv(path, sep=',', converters={'id1': str, 'id2': str})
df.to_excel(filepath, index=False)

这样写入Excel后,两列的原始数值都会完整保留,不会出现精度丢失的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:01:13