我在熊猫中有一个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()只能为所有其他float值打开它,而无法关闭它。
pandas.set_printoptions
pd.describe_options()
pd.core.format.set_eng_float_format()
您的数据可能是objectdtype。这是数据的直接复制/粘贴。read_csv将其解释为正确的dtype。通常,您仅应object在类似字符串的字段上使用dtype。
object
read_csv
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
检查您的dtype是否为 object
In [7]: df.dtypes Out[7]: id float64 value float64 dtype: object
这会将这个帧转换为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
这是将其转换回(astype(float))的方法
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
这就是objectdtype框架的样子
In [10]: df.astype(object).dtypes Out[10]: id object value object dtype: object