熊猫将分类分配给数据框中的数字

2024-09-28 03:15:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个数据帧:

+----------+----------+------------+------------+
| values_A | values_B | values_A_r | values_B_r |
+----------+----------+------------+------------+
|    1.623 |  1.91232 |        1.6 |     1.9123 |
|    1.582 |  1.32154 |        1.6 |     1.3215 |
+----------+----------+------------+------------+

我想找出值_A(四舍五入到1位)和值_A_r之间的差异,以及值_B(四舍五入到4位)和值_u u r之间的差异。根据不同,将类别指定为“相同”、“更多”或“更少”。如果所有的差异都是“相同的”,打印出一条信息。这是我当前的代码。在

^{pr2}$

我目前正在使用嵌套的npwhere语句来分配类别,它看起来真的很混乱。此外,我必须使用<;1**-10而不是==0,因为有时当数字是“相同”时,计算的差值将是8**-12而不是0。在

这个过程看起来真的很简单,代码使它看起来很复杂。有没有更简洁的方法?在


Tags: 数据方法代码lt信息过程数字差异
2条回答

例如,A;B是相同的,那么:

import pandas as pd

d = {'values_A': [1.623,1.582], 'values_A_r': [1.6,1.6]}
df = pd.DataFrame(data=d)

dfr = abs(round(df.values_A,1) - df.values_A_r) < 1e-10

if len(dfr.index) == dfr.agg('sum'):
   print('correct')
else:
   print('incorrect')  

下面让您快速检查这些值是否相同:

if ((check.values_A.round(1) - check_values_A_r).abs() < 1e-10).sum() == \
((check.values_B.round(4) - check_values_B_r).abs() < 1e-10).sum():
    print('Correct!')
else:
    raise SystemExit('Incorrect.')

这里我们使用的是布尔pd.Series的一个方便的性质,即True等于1,而{}等于{}。因此,我们只需检查通过比较A与{}以及{}与{}比较得到的布尔级数是否具有相同数量的True值。在

以下内容将为您提供A_check列:

^{pr2}$

相关问题 更多 >

    热门问题