Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:检查行中的列划分是否与舍入匹配_Python_Pandas_Dataframe_Rounding - Fatal编程技术网

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