微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我在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

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

这不起作用:

np.set_printoptions(supress=True) 

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

@H_502_20@解决方法:

您的数据可能是对象dtype.这是您数据的直接复制/粘贴. read_csv将其解释为正确的dtype.通常,您应该只在类似字符串的字段上使用对象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

检查你的dtypes是否是对象

In [7]: df.dtypes
Out[7]: 
id       float64
value    float64
dtype: object

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

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

这是如何将其转换回来(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

这就是对象dtype框架的样子

In [10]: df.astype(object).dtypes
Out[10]: 
id       object
value    object
dtype: object

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐