无法从DataFrame提取numpy.float64类型chikou_span列的指定行
浮点数精确匹配失效的解决方法
问题核心是浮点数的精度存储特性:你看到的3057.476074只是显示的近似值,numpy.float64类型的实际存储值是更精确的小数(比如可能是3057.4760740000002或3057.4760739999998),直接用==做精确对比会因为微小的精度差导致匹配失败;而整数类型没有这个问题,所以Volume列的匹配正常。
解决方法有三种:
用近似匹配函数:借助
numpy.isclose做容错对比,允许微小的精度误差import numpy as np df[np.isclose(df['chikou_span'], 3057.476074)]利用pandas自带的近似相等方法,指定容忍度
df[df['chikou_span'].eq(3057.476074, tolerance=1e-6)]对列值做四舍五入后再匹配,保留和目标值一致的小数位数
df[df['chikou_span'].round(6) == 3057.476074]
内容的提问来源于stack exchange,提问作者erfanvahdat
相关产品推荐
相关产品推荐

