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

对存放计算值的pandas DataFrame执行过滤操作失败问题求助

问题根因

核心是浮点数精度误差:np.arange(0.1, 1.0+0.01, 0.01)采用浮点步长累加生成序列,累计计算误差会导致序列中对应位置的数值并不是精确的0.2,而是类似0.2000000000000001或者0.1999999999999999这类和0.2非常接近的数值,isin()为精确匹配逻辑,自然无法匹配到对应行。

解决方法

方案1:近似匹配(无需修改原数据,推荐)

用numpy.isclose()做近似匹配,只要数值和目标值的误差在可接受范围内就算匹配,过滤代码修改为:

combined_data_subset = combined_data[np.isclose(combined_data['F_sil_remaining'], 0.2)]

方案2:生成序列时规避浮点误差

生成F_sil_remaining时先用整数步长计算,再缩放为小数,避免浮点累加误差:

# 替换原生成F_sil_remaining的代码
F_sil_remaining = np.arange(10, 101, 1) / 100

修改后原有isin([0.2])的过滤代码即可正常生效。

验证方法

运行以下代码可以直接看到序列中对应位置的实际精度:

for idx, val in enumerate(F_sil_remaining[:20]):
    print(f"索引{idx}:值={val:.20f}")

运行后可观察到索引10位置(对应预期的0.2)的实际数值和0.2的差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:15:02