gpt4 book ai didi

python - 将 float 转换为整数时的 Pandas 四舍五入

转载 作者:太空狗 更新时间:2023-10-30 00:28:59 26 4
gpt4 key购买 nike

我有一个带有 float (十进制)索引的 pandas DataFrame,我用它来查找值(类似于字典)。由于 float 不完全是它们应该乘以 10 的值并将其转换为整数 .astype(int) 在将其设置为索引之前。然而,这似乎做了一个 floor 而不是四舍五入。因此 1.999999999999999992 被转换为 1 而不是 2。之前使用 pandas.DataFrame.round() 方法进行舍入并不能避免这个问题,因为值仍然存储为 float 。

最初的想法(这显然引起了一个关键错误)是这样的:

idx = np.arange(1,3,0.001)
s = pd.Series(range(2000))
s.index=idx
print(s[2.022])

尝试转换为整数:

idx_int = idx*1000
idx_int = idx_int.astype(int)
s.index = idx_int
for i in range(1000,3000):
print(s[i])

输出总是有点随机,因为整数的“实际”值可能略高于或低于所需值。在这种情况下,索引包含值 1000 的两倍并且不包含值 2999。

最佳答案

你是对的,astype(int) 进行了向零的转换:

‘integer’ or ‘signed’: smallest signed int dtype

来自 pandas.to_numeric documentation (从 astype() 链接用于数字转换)。

如果要取整,需要做一个float取整,然后转成int:

df.round(0).astype(int)

根据您的需要使用其他舍入函数。

关于python - 将 float 转换为整数时的 Pandas 四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49153253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com