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)
我正在尝试将 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)