当前位置: 首页 > 知识库问答 >
问题:

压制熊猫的科学符号?[副本]

杜翰林
2023-03-14

我在pandas中有一个数据框,其中一些数字用科学符号(或指数符号)表示,如下所示:

                  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()似乎只对所有其他浮点值打开它,没有能力关闭它。

共有3个答案

丁灿
2023-03-14

尝试这样做,它将只为大值和非常小的值提供科学符号(并添加数千分隔符,除非省略“,”):

pd.set_option('display.float_format', lambda x: '%,g' % x)

或者,为了在不损失精度的情况下几乎完全抑制科学记数法,请尝试以下方法:

pd.set_option('display.float_format', str)
单于翰飞
2023-03-14

您的数据可能是数据类型。这是数据的直接复制/粘贴<代码>读取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是否是对象

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
姬银龙
2023-03-14

快速临时:df.round(4)

全局:<代码>pd。选项。陈列float\u格式=“{:20,.2f}”。格式

 类似资料:
  • 我在pandas中有一个数据帧,我正在从csv中读取它。 我的一个列的值包括、和科学记数法,即 我的问题是,当我读取csv时,pandas将这些数据视为,而不是它应该是的。我猜是因为它认为科学符号是字符串。 我尝试使用后,尝试使用。这会引发错误

  • 如何修改大熊猫中产生非常大数字的科学符号的组比操作输出的格式? 我知道如何在python中进行字符串格式设置,但在这里应用它时,我不知所措。 如果我转换成字符串,这会抑制科学记数法,但现在我想知道如何设置字符串格式和添加小数。

  • 问题内容: 我在熊猫中有一个DataFrame,其中一些数字用科学计数法(或指数计数法)表示,如下所示: 科学的表示法使应该进行轻松的比较成为不必要的困难。我认为正是21900的价值将其推向了其他水平。我的意思是1.0被编码。一! 这不起作用: 而且也没有实现抑制,而且我已经绝望了,只能为所有其他float值打开它,而无法关闭它。 问题答案: 您的数据可能是dtype。这是数据的直接复制/粘贴。将

  • 我正在尝试减少一些计算后得到的小数数量。我的问题出现的如下所示: 它输出这个: 现在我想将打印的小数位数减少到3。我尝试使用字符串格式进行设置,如下所示: 但是,此代码打印: 我真正想要的是: 如何将格式化为仅显示为科学符号但只有3位小数?

  • 我试图在pandas中使用从FTP服务器读取压缩文件。zip文件只包含一个文件,这是必需的。 这是我的密码: 我得到这个错误: 我在pandas 18.1和19.0中都遇到了这个错误。我是否遗漏了什么,或者这可能是一个错误?

  • 问题内容: 我正在尝试在我的matpllotlib Contourf图上自定义颜色条。虽然我能够使用科学记数法,但我尝试更改记数法的基础- 本质上是使我的价格变动范围在(-100,100)而不是(-10,10)内。 例如,这产生了一个简单的情节… 像这样: 但是,我希望颜色栏上方的标签为1e-2,数字范围为-10至10。 我将如何处理? 问题答案: 一种可能的解决方案是按以下问题子类化并固定其数量