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

将Pandas DataFrame保存为CSV文件时如何避免数值精度丢失

pandas导出CSV保留浮点数列完整精度的解决方法

很多时候你看到的精度丢失并不是pandas导出时导致的,而是用Excel打开CSV文件时,Excel默认自动截断长小数、转科学计数法导致的,你可以先用纯文本编辑器(比如VS Code、记事本、Sublime Text等)打开导出的CSV文件确认数值是否真的丢失。

如果确认是pandas导出时丢失精度,可按以下方法解决:

方法1:将目标列转为字符串后导出

这是最稳妥的方法,转成字符串后导出不会触发任何浮点自动格式化:

# 转为保留8位小数的字符串,避免出现科学计数法
df['Quantity'] = df['Quantity'].apply(lambda x: f"{x:.8f}")
# 导出时不需要额外加float_format参数
df.to_csv(r'/Users/Example.csv', index=False)

方法2:使用decimal模块处理浮点精度

如果需要保留数值属性导出,可以用高精度的decimal类型处理:

from decimal import Decimal, getcontext

# 设置精度足够覆盖你的小数位数
getcontext().prec = 12
df['Quantity'] = df['Quantity'].apply(lambda x: Decimal(str(x)).quantize(Decimal('0.00000001')))
# 导出时指定float_format
df.to_csv(r'/Users/Example.csv', index=False, float_format='%.8f')

注意事项

  • 你之前的操作同时做了列转字符串和加float_format参数,float_format仅对浮点类型列生效,对字符串列无影响,不会起到额外的精度保护作用。
  • 如果是Excel打开时的显示问题,你可以在导入Excel时将Quantity列指定为文本格式,就可以看到完整的小数位数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:27:00