Python 熊猫:检查行中的列划分是否与舍入匹配
假设我有一个数据帧Python 熊猫:检查行中的列划分是否与舍入匹配,python,pandas,dataframe,rounding,Python,Pandas,Dataframe,Rounding,假设我有一个数据帧dfas A B r 145 146 99.32 1 10 10 2 20 35 列r表示A与B的比率,第三行除外。但是,正如你们所看到的,第一行的这个比率已经四舍五入了 如果我跑 df[df.A/df.B == r] 因为四舍五入,我没有听到任何一行。显然,我可以用除法构造列,将其四舍五入,然后进行比较,但有没有办法直接从上面的选择说明中进行比较?我会使用以下方法: 它非常灵活-您可以指定相对或绝对公差:
df
as
A B r
145 146 99.32
1 10 10
2 20 35
列r
表示A
与B
的比率,第三行除外。但是,正如你们所看到的,第一行的这个比率已经四舍五入了
如果我跑
df[df.A/df.B == r]
因为四舍五入,我没有听到任何一行。显然,我可以用除法构造列,将其四舍五入,然后进行比较,但有没有办法直接从上面的选择说明中进行比较?我会使用以下方法:
它非常灵活-您可以指定相对或绝对公差:
rtol:浮动
相对公差参数(参见注释)
atol:浮动
绝对公差参数(见注释)
平等:bool
是否将NaN的进行同等比较。如果为True,则a中的NaN将被视为等于输出数组中b中的NaN
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