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