数据帧中的Numpy float存储似乎管理错误

2024-04-29 19:49:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚用这个数据帧测试了一个统计算法:

d1=pd.DataFrame([[0.1,0.2],[0.3,0.4],[0.5,0.6],[0.7,0.8],[0.9,0.81],[0.91,0.82],[0.93,0.94],[0.95,0.96],[0.97,0.98],[0.99,1]])

回顾:

  • d1.iloc[0,1]产生0.20000000000000001
  • d1.iloc[2,1]产生0.59999999999999998

表演

 d1=pd.DataFrame([[0.1,0.2],[0.3,0.4],[0.5,0.6],[0.7,0.8],[0.9,0.81],[0.91,0.82],[0.93,0.94],[0.95,0.96],[0.97,0.98],[0.99,1]]).astype(np.float)

或者

   d1=pd.DataFrame([[0.1,0.2],[0.3,0.4],[0.5,0.6],[0.7,0.8],[0.9,0.81],[0.91,0.82],[0.93,0.94],[0.95,0.96],[0.97,0.98],[0.99,1]], dtype=np.float)

不会改变结果

另一方面,b=np.float(0.2)c=np.float(0.6)在调用时给出正确的值。你知道吗

我遗漏了什么还是熊猫的数据管理真的有问题?这对我来说非常重要,因为我需要精确的数据。你知道吗

谢谢


Tags: 数据dataframenpfloat数据管理d1pddtype
1条回答
网友
1楼 · 发布于 2024-04-29 19:49:48

使用np.array而不是熊猫,比较一个元素的显示:

x=np.array([[0.1,0.2],[0.3,0.4],[0.5,0.6],[0.7,0.8],[0.9,0.81],[0.91,0.82],[0.93,0.94],[0.95,0.96],[0.97,0.98],[0.99,1]])

x[0,1]
Out[47]: 0.20000000000000001

float(x[0,1])
Out[48]: 0.2

np.float(x[0,1])   # np.float32
Out[49]: 0.2

np.float64(x[0,1])
Out[50]: 0.20000000000000001

当显示完整的64时,我们会看到额外的非零值在末尾关闭,但是对于short 32类型,我们没有看到

这与沃伦在评论中提供的信息相同。你知道吗

相关问题 更多 >