我会用np.isclose()方法:
In [32]: df
Out[32]:
A B r
0 3 7 0.420000
1 3 7 0.428571
2 1 2 10.000000
In [33]: df.A/df.B
Out[33]:
0 0.428571
1 0.428571
2 0.500000
dtype: float64
In [34]: np.isclose(df.A/df.B, df.r)
Out[34]: array([False, True, False], dtype=bool)
In [35]: np.isclose(df.A/df.B, df.r, atol=1e-2)
Out[35]: array([ True, True, False], dtype=bool)
In [36]: df.loc[np.isclose(df.A/df.B, df.r, atol=1e-2)]
Out[36]:
A B r
0 3 7 0.420000
1 3 7 0.428571
In [37]: df.loc[np.isclose(df.A/df.B, df.r)]
Out[37]:
A B r
1 3 7 0.428571
它非常灵活 - 可以指定相对或绝对公差:
RTOL:浮
相对宽容参数(见笔记)。
蒂:浮法
绝对公差参数(见注解)。
equal_nan:布尔
是否比较NaN的相等。如果为真,那么Na中的a将被认为与输出数组中的b中的NaN相等。