此问题已在此处有答案:
Format / Suppress Scientific Notation from Pandas Aggregation Results(8个回答)
去年关闭。
社区在11天前审查了是否重新打开这个问题,并关闭了它:
重复这个问题已经回答,不是唯一的,并且与另一个问题没有区别。
我在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
也没有实现suppress,我绝望地看过pd.describe_options()
,而pd.core.format.set_eng_float_format()
似乎只能为所有其他浮点值打开它,而没有能力关闭它。
6条答案
按热度按时间mspsb9vt1#
快速临时:第一个月
全局:
pd.options.display.float_format = '{:20,.2f}'.format
:20
意味着总宽度应该是20个字符,如果它会更短,则在左边填充空白。如果不想指定数字,可以简单地使用'{:,.2f}'
。.2f
意味着小数点后应该有两位数字,即使它们是零。vkc1a9a22#
您的数据可能是
object
dtype。这是您数据的直接复制/粘贴。read_csv
将其解释为正确的dtype。通常情况下,在字符串类型的字段上应该只有object
dtype。字符串
检查你的dtypes是否是
object
型
这会将此帧转换为
object
dtype(注意,现在的打印很有趣)型
这是如何将其转换回来(
astype(float)
)也适用于这里型
这就是
object
dtype帧的外观型
au9on6nz3#
尝试这个方法,它只会为你提供大的和非常小的值的科学符号(并添加千分之一的分隔符,除非你省略了“,”):
字符串
或者,为了几乎完全抑制科学记数法而不损失精度,请尝试以下操作:
型
daolsyd04#
无圆角快速修复:
字符串
wmtdaxz35#
如果你想在列表中使用格式化的字符串,比如作为csv文件csv.writier的一部分,可以在创建列表之前格式化数字:
字符串
tjjdgumg6#
我试过了所有的选择
但对我都没用
因此,在将变量/值(var 1)赋值给变量(比如num 1)时,我使用了round(val,5)。
字符串
这是一个粗糙的方法,因为你必须在每个赋值中使用这个轮函数。但这确保了你控制它是如何发生的,并得到你想要的。