如何在 python/pandas 中保留 2 位小数而不四舍五入?

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

如何为 Pandas 系列中的每个值重新训练 2 位小数? (我正在处理纬度和经度)。 dtype 是 float64.

series = [-74.002568, -74.003085, -74.003546]   

我尝试使用 round 函数,但顾名思义,它是四舍五入的。我查看了 trunc() 但这只能删除所有小数。然后我想为什么不尝试运行一个 For 循环。我尝试了以下方法:

for i in series:
    i = "{0:.2f}".format(i)

我能够毫无错误地运行代码,但它没有以任何方式修改数据。

预期输出如下:

[-74.00, -74.00, -74.00]    

任何人都知道如何实现这一点?谢谢!

python python-3.x pandas list
3个回答
1
投票
series = [-74.002568, -74.003085, -74.003546]

["%0.2f" % (x,) for x in series]

['-74.00', '-74.00', '-74.00']

它将您的数据转换为

string
/
object
数据类型。它仅用于显示目的。如果你想将它用于计算目的,那么你可以将它转换为浮动。然后只有一位小数是可见的。

[float('{0:.2f}'.format(x)) for x in series]
[-74.0, -74.0, -74.0]

1
投票

这是一种方法

假设你的意思是 pandas.Series,如果它是真的那么

# you indicated its a series but defined only a list
# assuming you meant pandas.Series, and if its true then

series = [-74.002568, -74.003085, -74.003546]  
s=pd.Series(series)

# use regex extract to pick the number until first two decimal places
out=s.astype(str).str.extract(r"(.*\..{2})")[0]
out

0    -74.00
1    -74.00
2    -74.00
Name: 0, dtype: object

0
投票

更改显示选项。这不应该改变你的基础数据。

pd.options.display.float_format = "{:,.2f}".format
© www.soinside.com 2019 - 2024. All rights reserved.