我正在将熊猫数据框输出到我正在编写的报告中,这很容易,因为您现在df.to_markdown()
可以将数据框转换为降价表,然后 pandoc 可以生成报告。
并且我们可以很好的控制具体的格式化细节,通过floatfmt=".3g"
作为参数传递,其操作在这里解释得很清楚:
...确切的规则如下:假设以表示类型“e”和精度 p-1 格式化的结果将具有指数 exp。然后,如果 m <= exp < p,其中 m 是 -4 表示浮点数,-6 表示小数,则数字的格式为表示类型“f”和精度 p-1-exp。否则,数字将使用表示类型“e”和精度 p-1 进行格式化。在这两种情况下,从有效数字中删除无关紧要的尾随零,如果小数点后面没有剩余数字,也会删除小数点,除非使用“#”选项...
除了我不想删除尾随零,而且我看不到一种简单的方法来阻止它们。
如果您想要一个可重现的示例,请执行以下操作:
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 |