抑制大熊猫的科学记数法?

use*_*215 35 python numpy pandas

我在pandas中有一个DataFrame,其中一些数字用科学记数法(或指数表示法)表示,如下所示:

                  id        value
id              1.00    -4.22e-01
value          -0.42     1.00e+00
percent        -0.72     1.00e-01
played          0.03    -4.35e-02
money          -0.22     3.37e-01
other            NaN          NaN
sy             -0.03     2.19e-04
sz             -0.33     3.83e-01
Run Code Online (Sandbox Code Playgroud)

而科学的符号使得应该是一个简单的比较,不必要的困难.我认为它是21900的价值,正在为其他人搞砸.我的意思是1.0编码.一!

这不起作用:

np.set_printoptions(supress=True) 
Run Code Online (Sandbox Code Playgroud)

并且pandas.set_printoptions没有实现抑制,并且我pd.describe_options()在绝望中看着所有,并且pd.core.format.set_eng_float_format()似乎只为所有其他浮点值打开它,没有能力将其关闭.

cit*_*man 52

快速临时: df.round(4)

全球: pd.options.display.float_format = '{:20,.2f}'.format

  • 尝试这个实验:`print('{:20,.8f}'.format(12333344445676.0123456789))`,然后将 20 调整为 40 ,看看会发生什么,我想你就会得到答案。您可以在打印语句中的数字上使用相同的样式格式化程序。 (3认同)
  • {:20}是什么意思? (2认同)
  • 同意@Bouncner,我也尝试了很多解决方案,但发现只有这个解决方案可以按预期打印 pandas 中浮点值的特定小数点位数。 (2认同)

Jef*_*eff 10

您的数据可能是objectdtype.这是您数据的直接复制/粘贴.read_csv将其解释为正确的dtype.您通常只应object在类似字符串的字段上使用dtype.

In [5]: df = read_csv(StringIO(data),sep='\s+')

In [6]: df
Out[6]: 
           id     value
id       1.00 -0.422000
value   -0.42  1.000000
percent -0.72  0.100000
played   0.03 -0.043500
money   -0.22  0.337000
other     NaN       NaN
sy      -0.03  0.000219
sz      -0.33  0.383000
Run Code Online (Sandbox Code Playgroud)

检查你的dtypes是否 object

In [7]: df.dtypes
Out[7]: 
id       float64
value    float64
dtype: object
Run Code Online (Sandbox Code Playgroud)

这将此帧转换为objectdtype(注意打印现在很有趣)

In [8]: df.astype(object)
Out[8]: 
           id     value
id          1    -0.422
value   -0.42         1
percent -0.72       0.1
played   0.03   -0.0435
money   -0.22     0.337
other     NaN       NaN
sy      -0.03  0.000219
sz      -0.33     0.383
Run Code Online (Sandbox Code Playgroud)

这是如何将它转换回来(astype(float))也可以在这里工作

In [9]: df.astype(object).convert_objects()
Out[9]: 
           id     value
id       1.00 -0.422000
value   -0.42  1.000000
percent -0.72  0.100000
played   0.03 -0.043500
money   -0.22  0.337000
other     NaN       NaN
sy      -0.03  0.000219
sz      -0.33  0.383000
Run Code Online (Sandbox Code Playgroud)

这就是objectdtype框架的样子

In [10]: df.astype(object).dtypes
Out[10]: 
id       object
value    object
dtype: object
Run Code Online (Sandbox Code Playgroud)


dab*_*bru 7

试试这个,它只会为大值和非常小的值提供科学记数法(并添加千位分隔符,除非省略“,”):

pd.set_option('display.float_format', lambda x: '%,g' % x)
Run Code Online (Sandbox Code Playgroud)

或者要几乎完全抑制科学记数法而不损失精度,请尝试以下操作:

pd.set_option('display.float_format', str)
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

50000 次

最近记录:

8 年,2 月 前