删除数据框中的科学符号浮点数



我从一个来源接收不同的系列。其中一些级数的值很大(X十亿)。然后,我将所有系列组合为一个数据框架,每个系列都有单独的列。

现在,当我打印数据框架时,序列中的大数字以科学记数法显示。即使单独打印该系列也能显示科学记数法中的数字。

Dataframe df (multiindex)输出为:

Values
Item    Sub                  
A       1        1.396567e+12
B       1        2.868929e+12

我已经试过了:

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

  • 它到处转换。我只需要在那个特定的数据帧中进行转换。
  • 它试图转换各种浮点数,而不仅仅是科学中的浮点数。所以,即使浮点数是89.142,它也会尝试转换格式,因为没有数字可以放',它会显示一个错误。

然后我试了这些:

df.round(2)

这只将数字浮点数从现有的3位小数转换为2位小数。对科学价值没有任何影响。

Then I try:

df.astypes(floats)

不做任何可见的事情。输出保持不变。

我们还可以如何将科学记数法更改为数据框架内的普通浮点数?我不想用转换后的值创建一个新列表。数据框本身应该以正常形式显示这些值。

你们能帮我找到解决这个问题的办法吗?

谢谢。

我建议将所有内容保持为float类型并调整显示设置。例如,我用一些随机数生成了一个df

df = pd.DataFrame({"Item": ["A", "B"], "Sub": [1,1],
"Value": [float(31132314122123.1), float(324231235232315.1)]})
#  Item  Sub         Value
#0    A    1  3.113231e+13
#1    B    1  3.242312e+14

如果取print(df),可以看到Sub的值为ints,Value的值为floats

Item      object
Sub        int64
Value    float64
dtype: object

您可以调用pd.options.display.float_format = '{:.1f}'.format来抑制floats的科学符号,同时保留float格式。

#  Item  Sub             Value
#0    A    1  31132314122123.1
#1    B    1 324231235232315.1
Item      object
Sub        int64
Value    float64
dtype: object

如果你想要回科学记数法,你可以调用pd.reset_option('display.float_format')

好的。我发现了一个叫做option_context的东西,它允许使用with语句为特定的case/action改变显示选项。

with pd.option_context('display.float_format',{:.2f}.format):
print(df)

因此,我们不需要重新设置选项,以及文件中所有其他数据的选项保持默认值。

遗憾的是,我无法找到以不同浮点格式存储不同列的方法(例如,一列使用货币-逗号分隔和2个小数,而下一列使用百分比-非逗号和2个小数)

尝试df['column'] = df['column'].astype(str)。如果不能工作,您应该在从数据

创建pandas数据框架之前将数字类型更改为字符串。

相关内容

  • 没有找到相关文章

最新更新