次のデータフレームがあります:
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を使用しています
フロート比較が不正確なため、or
np.isclose
、isclose
は、相対許容誤差と絶対許容誤差のパラメーターを取るため、次のように機能します。
df['result'] = df['actual_credit'].ge(df['min_required_credit']) | np.isclose(df['actual_credit'], df['min_required_credit'])
一般にnumpy
Comparison 関数はpd.Series
とうまく機能し、要素ごとの比較を可能にします:isclose
、allclose
、greater
、greater_equal
、less
、less_equal
など.
あなたの場合 greater_equal
は次のようになります:
df['result'] = np.greater_equal(df['actual_credit'], df['min_required_credit'])
または、提案されているように、 pandas.ge
(またはle
、gt
など)を使用します。
df['result'] = df['actual_credit'].ge(df['min_required_credit'])
or
ingとge
のリスク(上記のとおり)は、たとえば3.999999999999
と4.0
を比較すると、True
が返される場合がありますが、これは必ずしも必要なわけではありません。