[英]Floating Point in a Pandas Data Frame
在尝试匹配熊猫数据框中的某些值时,我遇到了一些奇怪的结果 - 本质上,我有以下唯一值
array([18. , 18.04000092, 18.07999992, 18.12000084, 18.15999985,
18.20000076, 18.23999977, 18.28000069, 18.31999969, 18.36000061,
18.39999962])
但是当我尝试将这些值之一与数据框匹配时,我什么也没得到
例子
t1 = R[R.lat == 18.04000092]
time speed_x Speed_Estimated direction_x Direction_Estimated lat lon time
---------------------------------------------------------------
问题是,当我只提取那一列时,我可以看到大熊猫将其四舍五入
R['lat']
1573052 18.0
1573053 18.0
1573054 18.0
1573055 18.0
1573056 18.0
...
1578740 18.4
1578741 18.4
1578742 18.4
1578743 18.4
1578744 18.4
Name: lat, Length: 2106, dtype: float64
所以基本上熊猫在内部对数字进行四舍五入,所以我的问题是最好的方法是什么?,我应该更改值以便熊猫不四舍五入吗?但是为什么当我提取唯一值时,熊猫显示数字不同的格式?
你能试试这个吗?
pd.set_option("display.precision", 8)
R = pd.DataFrame(np.array([18. , 18.04000092, 18.07999992, 18.12000084, 18.15999985,
18.20000076, 18.23999977, 18.28000069, 18.31999969, 18.36000061,
18.39999962]))
R.columns = ['lat']
R
我通过使两列完全相同的数据类型解决了这个问题,之后,我能够轻松地比较数字。
d[d.select_dtypes(np.float64).columns] = d.select_dtypes(np.float64).astype(np.float32)
我以前从未遇到过这个问题,但由于每个数字的浮点分辨率不同,因此数字本身也不相同,这是有道理的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.