30

次のデータフレームがあります。

       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 を示す列を追加する必要があります。結果は次のようになります。

       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'])

ただし、3 行目 (0.4 および 0.4) は常に False になります。次のようなさまざまな場所でこの問題を調査した後: Python で浮動小数点数がほぼ等しいかどうかを比較する最良の方法は何ですか? 私はまだこれを機能させることができません。2 つの列の値が同じ場合、結果は正しくない False になります。

私はpython 3.3を使用しています

4

4 に答える 4

41

float の比較が不正確であるため、 との比較を行うことができorます。相対および絶対許容誤差パラメーターを使用するため、次のように動作するはずです。np.iscloseisclose

df['result'] = df['actual_credit'].ge(df['min_required_credit']) | np.isclose(df['actual_credit'], df['min_required_credit'])
于 2015-11-10T10:05:59.703 に答える
-3

pandas.DataFrame.abs()組み込みの代わりに使用しabs()ます。

df['result'] = df['actual_credit'].abs() >= df['min_required_credit'].abs()
于 2015-11-10T09:29:09.867 に答える