Pandas Python:为什么 np.round() 3.601626 到 2 dp returns 3.6?

Pandas Python: why does np.round() 3.601626 to 2 dp returns 3.6?

我正在尝试将 df 中的一些浮点数舍入为 2 dp,但所有 10 的倍数都舍入为 1 dp,因此 3.60 为 3.6,12.40 为 12.4...

我有一个 df:

Values           A         B         C         D
Question                                                                                                    
A2         4.08642  4.144279  3.601626  3.983852

我的代码

np.round(df,2)

输出

Values        A     B    C     D
Question                                                                                                    
A2         4.09  4.14  3.6  3.98

预期输出

Values        A     B     C     D
Question                                                                                                    
A2         4.09  4.14  3.60  3.98

如何强制 np.round 将“3.6”显示为“3.60”?

仅供参考 - 我不想使用字符串格式化程序,因为我必须四舍五入这些数字。

问题不在于舍入,而在于 pandas 显示 DataFrame 的方式。

您可以设置 float_format 如:

pd.options.display.float_format = '${:,.2f}'.format

详见 this answer

您可以使用字符串格式化程序,然后再次使用库中的 Decimal 函数将 return 数字:

示例代码:

import decimal
print(decimal.Decimal("{:.2f}".format(3.6)))

另一种设置 pandas display.float_format 选项的方法:

>>> pd.set_option('float_format', '{:,.2f}'.format)