Pandas to_csv保存CSV时数值被舍入,如何禁止舍入?
解决Pandas to_csv过度舍入数值的问题
Pandas的to_csv默认会对浮点数做自动格式处理,导致小数值被舍入成0,下面是几种直接有效的解决方法:
方法1:指定浮点数输出格式
在to_csv里用float_format参数强制保留足够多的小数位,确保小数值不会被截断:
# 保留10位小数,可根据实际精度需求调整位数 df.to_csv("output_path", index=False, header=False, float_format='%.10f')
如果不确定数值的小数位数,也可以用科学计数法格式保证精度:
df.to_csv("output_path", index=False, header=False, float_format='%.10e')
方法2:将数值转为字符串存储
把浮点数列直接转成字符串类型,完全保留原始数值的字符表示:
# 针对单个需要保留精度的列转换 df['your_column_name'] = df['your_column_name'].astype(str) # 或者批量处理所有浮点数列 df = df.applymap(lambda x: str(x) if isinstance(x, float) else x) df.to_csv("output_path", index=False, header=False)
注意:后续读取CSV时需要手动将字符串转回数值类型。
方法3:用Decimal类型存储高精度数值
如果涉及极高精度的计算,先把数值转为decimal.Decimal类型再保存:
from decimal import Decimal df['your_column_name'] = df['your_column_name'].apply(Decimal) df.to_csv("output_path", index=False, header=False)
读取时同样需要用Decimal类型解析对应列。
验证方式:保存后用文本编辑器打开CSV文件,检查目标数值是否完整保留,比如0.00002134566是否显示为原数值而非0.0。
内容的提问来源于stack exchange,提问作者pillow
相关产品推荐
相关产品推荐

