我尝试创建如下所示的 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/