删除数据框中的科学记数法浮动

问题描述 投票:0回答:3

我从某个来源收到了不同的系列。其中一些系列的价值很大(十亿)。然后,我将所有系列合并到一个数据框中,每个系列都有单独的列。

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

数据帧 df(多索引)输出为:

                 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 位小数。没有对科学价值观做任何事情。

然后我尝试了:

df.astypes(floats)

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

我们还能如何将数据框中的科学记数法更改为正常的浮点数字。我不想使用转换后的值创建新列表。数据框本身应该以正常方式显示值。

你们能帮我找到解决方案吗?

谢谢你。

python dataframe types scientific-notation
3个回答
1
投票

好的。我发现了一个名为 option_context for pandas 的东西,它允许使用 with 语句更改特定情况/操作的显示选项。

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

因此,我们不必再次重置选项,并且文件中的所有其他数据的选项保持默认值。

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


0
投票

我建议将所有内容保留为

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')


-1
投票

尝试

df['column'] = df['column'].astype(str)
。如果不起作用,您应该在从数据创建 pandas 数据框之前将数字类型更改为字符串

© www.soinside.com 2019 - 2024. All rights reserved.