Pandas 样式器不保持舍入

Pandas styler does not maintain rounding

我想四舍五入 Pandas DataFrame 然后给它添加一个标题,但是 Pandas style.set_caption 命令破坏了四舍五入。

示例:

pd.DataFrame(np.array([[0.555,0.444],[0.333,0.222]])).round(decimals = 2).style.set_caption("hello")

结果:

hello
    0   1
0   0.560000    0.440000
1   0.330000    0.220000

如何在维护路由的同时添加标题?

当然已经保持了四舍五入。它只是不打印 2 位小数。这是两个完全不同的概念,如果您正在处理浮点数据,理解这一点很重要。您可以使用 pd.options.display.float_format 更改 pandas 显示浮点数的方式。

另请注意,一般情况下,计算时最好保留所有小数位,显示时四舍五入即可。如果您的值为 0.555,那么您应该使用 0.555 进行计算,并让正在执行的打印将其显示为 0.56。人类关心限制小数位。计算机不会。

答案是Styler.format。例如:

df = pd.DataFrame(np.array([[0.555,0.444],[0.333,0.222]]))
df.style.set_caption("hello").format('{:.2f}')

对于Pandas 1.3.0+,你可以通过precision=2:

df.style.set_caption("hello").format(precision=2)

输出: