如何更改python存储的实际浮点格式?

2024-09-28 21:19:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫系列,里面装满了花车。当我把熊猫 后面的列表中有一些浮点数是用科学符号表示的。在stackoverflow上有很多文章改变了float的显示,我完全理解,但是当我调用.tolist()方法时,我需要这些值都是十进制格式。你知道吗

s = pd.Series([-3.75e-05,
 -6.25e-05,
 -8.75e-05,
 -8.75e-05,
 -8.75e-05,
 -0.0001125,
 -0.00015,
 -0.0001625,
 -0.0001625,
 -0.0001625])

为什么有些浮点数用科学记数法打印,有些用十进制?你知道吗


Tags: 方法列表格式文章符号科学floatstackoverflow
3条回答

尝试使用Decimal,结果将是一个列表:

from decimal import Decimal
s = pd.Series([-3.75e-05,
 -6.25e-05,
 -8.75e-05,
 -8.75e-05,
 -8.75e-05,
 -0.0001125,
 -0.00015,
 -0.0001625,
 -0.0001625,
 -0.0001625])


result = [round(Decimal(x),5) for x in s]
result

结果

[Decimal('-0.00004'),
 Decimal('-0.00006'),
 Decimal('-0.00009'),
 Decimal('-0.00009'),
 Decimal('-0.00009'),
 Decimal('-0.00011'),
 Decimal('-0.00015'),
 Decimal('-0.00016'),
 Decimal('-0.00016'),
 Decimal('-0.00016')]

如果你不担心速度

def to_str(x): return '%f' % x
s=s.apply(to_str)

我想指出的一点是,科学记数法中的价值观不会对分析产生任何重大影响。 J.K对这个问题给出了最好的回答,但是随着数据集的增加,这种方法(非矢量化方法)对系统来说太过强大,而且他/她的示例中的“result”变量的数据类型是Decimal(而不是float)。你知道吗

>>>type(decimal.Decimal(1.22))
<class 'decimal.Decimal'>

要解决这些问题,可以执行以下操作:

import decimal
s = pd.Series([-3.75e-05,
 -6.25e-05,
 -8.75e-05,
 -8.75e-05,
 -8.75e-05,
 -0.0001125,
 -0.00015,
 -0.0001625,
 -0.0001625,
 -0.0001625])
s=s.apply(decimal.Decimal)
print(s)

输出:

0    -0.0000374999999999999967148674173689215649574...
1    -0.0000625000000000000013010426069826053208089...
2    -0.0000874999999999999991109542185618863641138...
3    -0.0000874999999999999991109542185618863641138...
4    -0.0000874999999999999991109542185618863641138...
5    -0.0001124999999999999969208658301411674074188...
6    -0.0001499999999999999868594696694756862598296...
7    -0.0001624999999999999925406890532997294940287...
8    -0.0001624999999999999925406890532997294940287...
9    -0.0001624999999999999925406890532997294940287...

相关问题 更多 >