如何在 pandas 数据框列中显示具有 2 位小数的值?

Rya*_*eid 13 python rounding dataframe python-3.x pandas

我想要做的是使其无论值如何,都显示 2 位小数。

到目前为止我已经尝试过:

DF['price'] = DF['price'].apply(lambda x: round(x, 2))
Run Code Online (Sandbox Code Playgroud)

然而,问题是我希望以 2 位小数显示所有内容,但像 0.5 这样的值仍保留 1 位小数,因为它们不需要四舍五入。

我可以应用一个函数来提供以下类型的输出:

Current        After Changes
0              0.00
0.5            0.50
1.01           1.01
1.133333       1.13
Run Code Online (Sandbox Code Playgroud)

理想情况下,这些值将被四舍五入,但如果这就是全部有效的话,我愿意截断。

Zom*_*raz 15

如果你只想修改值的格式而不在 pandas 中进行任何操作,你应该执行以下指令:

pd.options.display.float_format = "{:,.2f}".format
Run Code Online (Sandbox Code Playgroud)

这迫使它不使用科学记数法(指数记数法)并始终显示小数点后 2 位。它还添加逗号。

您应该可以在这里获得更多信息:

https://pandas.pydata.org/docs/user_guide/options.html#number-formatting

例子:

0.0012             0.00
0.0123             0.01
1.2345             1.23
12.345             12.35
100                100.00
1234567890.123456  1,234,567,890.12
 
Run Code Online (Sandbox Code Playgroud)


小智 12

尝试:

import pandas as pd
pd.set_option('display.precision', 2)
Run Code Online (Sandbox Code Playgroud)

这会导致它在适当的时候使用科学(指数)表示法,并保留 2 位小数。它根据每列决定是否使用科学计数法,因此如果 1 个值需要科学计数法,则整个列都会以这种方式显示。

例子:

0.0012             1.23e-03
0.0123             1.23e-02
100                1.00e+02
1234567890.123456  1.23e+09
Run Code Online (Sandbox Code Playgroud)


mae*_*ati 4

您必须设置 pandas 显示的精度。导入 pandas 后将其放在脚本顶部:

import pandas as pd
pd.set_option('precision', 2)
Run Code Online (Sandbox Code Playgroud)

  • 在 Python 3.9 和 Pandas 1.4.2 中,运行 `pd.set_option(' precision', 2)` 会导致 `OptionError: 'Pattern matches multiple key'`。 (4认同)
  • 请改用“pd.set_option('display. precision', 5)”,以避免“OptionError”。 (3认同)