You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataFrame获取特定值行索引失败,仅匹配0值正常

解决DataFrame浮点数匹配返回空列表的问题

这是浮点数精度误差导致的问题:计算机存储浮点数时会产生微小舍入偏差,你在DataFrame中看到的0.000376,实际存储的可能是类似0.0003760000000001或0.0003759999999999的数值,直接用==做精确匹配自然会失败;而0是整数,存储无精度误差,所以匹配能成功。

给你几个可行的解决方案:

  • 使用pandas内置的isclose()函数做近似匹配,可自定义容差:

    df.index[df[0].isclose(0.000376)].tolist()
    

    若需要更严格的精度控制,可调整rtol(相对容差)和atol(绝对容差)参数:

    df.index[df[0].isclose(0.000376, rtol=1e-9, atol=1e-12)].tolist()
    
  • 对列数据做四舍五入处理,保留与目标值一致的小数位数后再匹配:

    df.index[round(df[0], 6) == 0.000376].tolist()
    
  • 查看数值的精确存储值,确认误差范围:

    # 输出接近0.000376的数值的精确表示
    print(df[df[0].between(0.000375, 0.000377)][0].apply(repr))
    

内容的提问来源于stack exchange,提问作者Lorenz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:00:59