【问题标题】:How do you prevent pandas to_csv from formatting numbers as numeric in order to preserve leading 0s?如何防止 pandas to_csv 将数字格式化为数字以保留前导 0?
【发布时间】:2021-02-05 20:28:15
【问题描述】:

我正在使用 to_csv 方法将数据框保存为 csv。但是,前面的 0 正在被删除。

例如,这是数据框在输出之前的样子:

正如您在第 6 列“采购订单”中看到的那样,数据是数字但包含前导 0。我想在输出到 csv 并在 Excel 中查看时保留该格式并保留前导 0,但是在 csv 输出中删除了前导 0:

有没有办法防止这种情况发生?这是我正在使用的命令:

out1.to_csv(outfile + '.csv', index=False, float_format='%f')

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

    您是否尝试过使用float_format='%.16f' 或类似的东西?

    【讨论】:

      【解决方案2】:

      我相信这更像是一个 Excel 问题,而不是 pandas。如果您使用文本编辑器查看 csv 文件,(我猜)您仍然会看到带有前导零的数字。我这样说是因为我在使用 Excel 时遇到了类似的问题,假设 CSV 文件中的项目格式namely dates,并产生了不可逆或烦人的转换。

      在这种情况下,Excel 似乎将采购订单视为一个数字,然后对其进行格式化。它会在打开文件时立即执行此操作,因此您无法返回并格式化单元格或任何内容(零丢失)。

      我认为 2 个简单的替代方案是:

      • .xlsx 格式保存为df.to_excel()。这对我有用一些虚假的前导零数据。如果您只打算在 Excel 中使用数据,也许这是最好的。
      • 编辑您的采购订单列,使其文本清晰。就像附加一个非数字字符(以后可以删除):
      df['Purchase Order'] = '#' + df['Purchase Order']
      # df.to_csv('data.csv')
      

      【讨论】:

      • 完全同意 Excel 是这里的罪魁祸首。
      猜你喜欢
      • 2014-11-29
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多