我在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] 举报,一经查实,本站将立刻删除。