gpt4 book ai didi

python - 使用 dtype float64 创建 pandas dataframe 更改其条目的最后一位数字(相当大的数字)

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:19 25 4
gpt4 key购买 nike

我尝试创建如下所示的 pandas 数据框

import pandas as pd
import numpy as np

pd.set_option('precision', 20)

a = pd.DataFrame([10212764634169927, 10212764634169927, 10212764634169927], columns=['counts'], dtype=np.float64)

a 返回为:

             counts
0 10212764634169928.0
1 10212764634169928.0
2 10212764634169928.0

所以,我的问题是,为什么修改了最后一位?

提前致谢!

编辑:我知道它与数据类型有关。但为什么要特别对最后一位数字 +1 呢?如果我改用 10212764634169926,什么也没有发生,结果保持为 10212764634169926。与 10212764634169928 相同,它返回 10212764634169928

最佳答案

这个问题与 pandas 本身无关,而是与 float 数字本身有关。如果您尝试以下操作:

float(10212764634169927)
1.0212764634169928e+16

您可以了解 float 是如何存储在内存中的(通过指数表示法)(见最后一位小数)。为了更深入地了解这个问题,我测试了以下内容:

a.astype('float64')
counts
0 10212764634169928.0
1 10212764634169928.0
2 10212764634169928.0

a.astype('float32')
counts
0 10212764362473472.0
1 10212764362473472.0
2 10212764362473472.0

您可以看到,使用 float32 格式会返回更多差异。

关于python - 使用 dtype float64 创建 pandas dataframe 更改其条目的最后一位数字(相当大的数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43851930/

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