【问题标题】:Writing small numbers to CSV without "E-X"在没有“E-X”的情况下将小数字写入 CSV
【发布时间】:2022-01-24 16:43:50
【问题描述】:

我正在使用 python csv 模块写入功能将数据写入 csv 文件。但是,诸如 0.0000123 之类的小数字被写为“1.23E-5”

这会在读回数据时引起问题。

有什么建议吗?

【问题讨论】:

  • 你写的怎么样?
  • ...你是怎么读回来的?您使用的什么软件无法解析指数符号?
  • @Barmar 使用 python CSV 模块。并使用 Pandas 回读
  • 为什么指数符号有问题?大熊猫不可以解析吗?
  • 读回什么样的问题?

标签: python pandas csv


【解决方案1】:

当你保存到 csv 时,你可以在 pandas 中指定浮点格式

df.to_csv('file.csv', float_format='%.3f')

【讨论】:

  • 仅供参考:这会将值 0.0000123 写入 0.000,这可能是不希望的精度损失。
  • @WarrenWeckesser 显然,如果 OP 不愿意使用科学记数法并选择可接受的小数位数,他们必须接受这种权衡。
  • @WarrenWeckesser 尽管如此,每次从十进制基数 2 转换为基数 10 时,精度损失都是一个现实,即使您使用科学记数法。
  • @OriYarden 无论何时将基数 2 IEEE-754 转换为基数 10 ASCII,您总是会损失精度。例如,十进制数 0.3 在基数 2 表示中具有无限位。 Pandas 对此无能为力。在您的解决方案中,%s 只会在值上调用 str()
猜你喜欢
  • 1970-01-01
  • 2021-02-24
  • 2020-09-27
  • 2021-10-30
  • 2017-05-20
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多