比较pandas列中的浮动

2024-05-19 19:18:04 发布

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

我有以下数据框:

       actual_credit    min_required_credit
   0   0.3              0.4
   1   0.5              0.2
   2   0.4              0.4
   3   0.2              0.3

我需要添加一个列,指明实际的“学分”=所需的“学分”。结果将是:

       actual_credit    min_required_credit   result
   0   0.3              0.4                   False
   1   0.5              0.2                   True
   2   0.4              0.4                   True
   3   0.1              0.3                   False

我正在做以下工作:

df['result'] = abs(df['actual_credit']) >= abs(df['min_required_credit'])

然而,第三行(0.4和0.4)经常导致错误。在包括What is the best way to compare floats for almost-equality in Python?在内的多个地方研究过这个问题之后,我仍然无法让它工作。当两列具有相同的值时,结果为False,这是不正确的。

我正在使用Python3.3


Tags: the数据falsetruedfis错误required
2条回答

由于浮动比较不精确,您可以or^{}进行比较,isclose采用相对和绝对公差参数,因此应执行以下操作:

df['result'] = df['actual_credit'].ge(df['min_required_credit']) | np.isclose(df['actual_credit'], df['min_required_credit'])

使用pandas.DataFrame.abs()而不是内置的abs()

df['result'] = df['actual_credit'].abs() >= df['min_required_credit'].abs()

相关问题 更多 >