相等操作不适用于一个或多个单元格中的 Pandas 数据帧值,但适用于其他单元格

Equality operation does not work for Pandas dataframe value in one or more cells but work for others

提问人:user8465900 提问时间:3/25/2019 最后编辑:user8465900 更新时间:3/25/2019 访问量:136

问:

我正在使用 pandas 处理从 csv 文件中读取的数据帧。我想做一些相等操作来查找列具有特定值的行。但是,相等运算似乎对某些数字有效,但对其他数字无效。

sample[sample['Time'] == 34200.045021468].index
Out[68]: Int64Index([], dtype='int64')

sample.loc[40, ['Time']]

Out[69]: 
Time    34200.045021468
Name: 40, dtype: float64
sample[sample['Time'] == 34200.647527227].index
Out[71]: Int64Index([170, 171, 172, 173, 174], dtype='int64')

我没有尝试过所有值,但是当我尝试搜索值 34,200.045021468 时,它没有找到任何东西,但可以看出它确实存在于我的数据帧中。

另一方面,当我对另一个值 34,200.647527227 执行相同的操作时,它有效?!

谁能就问题所在以及如何解决提出建议?先谢谢你

Python pandas 浮点 相等

评论

0赞 Amir Imani 3/25/2019
你能分享一下你得到的小跑吗?您可能需要首先使用 pd.to_numeric() 强制所有值都是数字
0赞 user8465900 3/25/2019
嗨,阿米霍斯,对不起,但什么是小跑?
0赞 Amir Imani 3/25/2019
对不起,自动更正 - 我的意思是你得到的错误*......
0赞 user8465900 3/25/2019
啊,我明白了。没有错误,只是当我期望它返回列值 = 34200.045021468 的行的索引时,结果是空的。当我尝试使用 34200.647527227 时,它正确地做到了
2赞 Serge Ballesta 3/25/2019
嗯,这看起来真的像是浮点坏了吗的化身。该列是一个 float64,它只是您可以查看和键入的十进制值的近似值。唯一的规则是永远不要对浮点类型使用完全相等Time

答: 暂无答案