Comparing floats in a pandas column

邮差的信 提交于 2019-12-29 05:03:29

问题


I have the following dataframe:

       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

I need to add a column indicating where actual_credit >= min_required_credit. The result would be:

       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

I am doing the following:

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

However the 3rd row (0.4 and 0.4) is constantly resulting in False. After researching this issue at various places including: What is the best way to compare floats for almost-equality in Python? I still can't get this to work. Whenever the two columns have an identical value, the result is False which is not correct.

I am using python 3.3


回答1:


Due to imprecise float comparison you can or your comparison with np.isclose, isclose takes a relative and absolute tolerance param so the following should work:

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



回答2:


Use pandas.DataFrame.abs() instead of the built-in abs():

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


来源:https://stackoverflow.com/questions/33626443/comparing-floats-in-a-pandas-column

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!