编程语言
首页 > 编程语言> > python-使用dtype float64创建熊猫数据框会更改其条目的最后一位(相当大的数字)

python-使用dtype float64创建熊猫数据框会更改其条目的最后一位(相当大的数字)

作者:互联网

我试图创建如下的熊猫数据框

import pandas as pd
import numpy as np

pd.set_option('precision', 20)

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

返回为:

             counts
0  10212764634169928.0
1  10212764634169928.0
2  10212764634169928.0

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

提前致谢!

编辑:我知道它与dtype有关.但是为什么要1到最后一位数字呢?如果我改用10212764634169926,则什么也没有发生,结果将保留到10212764634169926.与10212764634169928相同,它返回10212764634169928

解决方法:

这个问题与大熊猫本身无关,而与浮点数本身有关.如果您尝试以下操作:

float(10212764634169927)
1.0212764634169928e+16

您可以对浮点数如何存储在内存中(通过指数表示法)有所了解(请参阅最后一个十进制).为了进一步研究这个问题,我测试了以下内容:

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格式将返回更多差异.

标签:pandas,data-science,python,numpy
来源: https://codeday.me/bug/20191026/1933193.html