【问题标题】:Pandas data precision [duplicate]熊猫数据精度[重复]
【发布时间】:2017-08-30 06:49:39
【问题描述】:

默认情况下,数据框中的数值最多只能存储 6 位小数。如何获得完整的精度。

例如
34.98774564765 存储为 34.987746。我确实想要完整的价值。

而 0.00000565 存储为 0..

除了将格式应用于每个数据帧之外,还有任何有助于保持精度的全局设置。

谢谢

【问题讨论】:

  • 你能发布一个可重现的例子吗?

标签: python pandas


【解决方案1】:

您的数据存储的精度与您的数据类型相对应(np.float16np.float32np.float64)。

pd.options.display.precision - 允许您更改 printing 数据的精度

【讨论】:

  • 如何在上下文管理器中进行设置?
【解决方案2】:

不,34.98774564765 只是默认打印了六个小数位:

>>> pandas.DataFrame([34.98774564765])
           0
0  34.987746

数据本身具有更高的精度:

>>> pandas.DataFrame([34.98774564765])[0].data[0]
34.98774564765

您可以通过更改pandas.options.display.precision 来更改用于打印框架的默认值。

例如:

>>> pandas.set_option("display.precision", 8)
>>> pandas.DataFrame([34.98774564765])
                0
0  34.98774564765

【讨论】:

  • 这真的很有帮助,谢谢!
  • 正是我想要的——谢谢。 df.round(10) 不起作用,所有其他格式功能也不起作用。这是完美而简单的。
  • 此选项有时会以科学计数法打印。如果您需要统一的输出,请使用其他答案中的 display.precision 选项
  • 在我看来astype也受到了影响,所以column.astype(str)[0]会被截断
  • 我已经通过c.astype(np.float64).astype(str) 解决了这个问题,否则从float32 到字符串的直接转换似乎会进行一种“显示”转换并截断数字
【解决方案3】:

您也可以使用'display.float_format' 选项

with pd.option_context('display.float_format', '{:0.20f}'.format):
    print(pd.DataFrame([34.98774564765]))

                        0
0 34.98774564765000150146

【讨论】:

    猜你喜欢
    • 2023-01-31
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 2017-09-19
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多