抑制 pandas 中的科学记数法? [英] Suppressing scientific notation in pandas?

查看:38
本文介绍了抑制 pandas 中的科学记数法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a DataFrame in pandas where some of the numbers are expressed in scientific notation (or exponent notation) like this:

                  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 已编码.一!

And the scientific notation makes what should be an easy comparison, needlessly difficult. I assume it's the 21900 value that's screwing it up for the others. I mean 1.0 is encoded. ONE!

这不起作用:

np.set_printoptions(supress=True) 

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

And pandas.set_printoptions doesn't implement suppress either, and I've looked all at pd.describe_options() in despair, and pd.core.format.set_eng_float_format() only seems to turn it on for all the other float values, with no ability to turn it off.

推荐答案

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

Your data is probably object dtype. This is a direct copy/paste of your data. read_csv interprets it as the correct dtype. You should normally only have object dtype on string-like fields.

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

检查您的数据类型是否为 object

check if your dtypes are object

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

这会将这个框架转换为 object dtype(注意现在打印很有趣)

This converts this frame to object dtype (notice the printing is funny now)

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)) 也适用于这里

This is how to convert it back (astype(float)) also works here

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

这就是 object dtype 框架的样子

This is what an object dtype frame would look like

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

这篇关于抑制 pandas 中的科学记数法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆