繁体   English   中英

Pandas 数据帧中的浮点数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM