【问题标题】:How to preserve trailing zeros?如何保留尾随零?
【发布时间】:2020-07-23 18:56:09
【问题描述】:

我正在将 pandas 数据框输出到我正在编写的报告中,这很简单,您现在可以通过 df.to_markdown() 将数据框转换为降价表,然后 pandoc 可以生成报告。

而且我们可以很好的控制具体的格式化细节,通过floatfmt=".3g"作为参数,其操作解释得很清楚here

... 精确的规则如下:假设用表示类型“e”和精度 p-1 格式化的结果将具有指数 exp。然后,如果 m

除了我不想删除尾随零,而且我看不到一种简单的方法来阻止它们。

如果你想要一个可重现的例子,你可以这样做:

import pandas as pd

df = pd.DataFrame({'Numbers':[0.100, 0.123, 0.101, 0.099, 0.120, 0.012]})
print(df.to_markdown(showindex=False, floatfmt=".2g"))

给予

|   Numbers |
|----------:|
|     0.1   |
|     0.12  |
|     0.1   |
|     0.099 |
|     0.12  |
|     0.012 |

我可以改变它来指定小数,像这样

print(df.to_markdown(showindex=False, floatfmt=".2f"))

给了

|   Numbers |
|----------:|
|     0.10  |
|     0.12  |
|     0.10  |
|     0.10  |
|     0.12  |
|     0.01  |

--但是这不是我想要的。我想要两个有效数字。带有尾随零。像这样:

|   Numbers |
|----------:|
|     0.10  |
|     0.12  |
|     0.10  |
|     0.099 |
|     0.12  |
|     0.012 |

【问题讨论】:

  • 你不能,不能不转换为字符串。 0.100 在传递给 pandas 之前就变成了 0.1
  • @Scott,我已经编辑了问题以准确显示我想要的内容。
  • "在这两种情况下,从有效数字中删除无关紧要的尾随零,如果后面没有剩余数字,小数点也会被删除,除非使用了 '#' 选项"您是否尝试过使用floatfmt="#.2g"?
  • @Steven Rumblaski -- 不,我没有,是的,它有效!如果你把它作为答案,我会接受它:) 谢谢 :)

标签: python pandas tabulate


【解决方案1】:

为了保留重要的尾随零,请使用#

所以改变

floatfmt=".2g"

floatfmt="#.2g"

【讨论】:

  • 我什至把它包括在我的问题中......现在感觉有点愚蠢:S但非常感谢你:)
  • 没关系。有时,如果有更多示例,文档会更清晰。
  • 设置号。有效数字而不是数字。小数位数。
猜你喜欢
  • 2021-12-02
  • 2021-09-13
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
  • 2018-02-03
  • 1970-01-01
相关资源
最近更新 更多