np.where过滤器不等于0,但出现'ZeroDivisionError:float 除以零'

问题描述 投票:0回答:1

在我的代码中,我对数据框中的列使用以下计算:

np.where(df_score['number'] ! = 0, 100 - ((100 * df_score[rank_column] -50)/df_score['number']), None)
,我已经用了
df_score['number']! = 0
,但是代码还是错误,
ZeroDivisionError: float division by zero
,即使我把
df_score['number']! = 0
改成
df_score['number'] > 0
,为什么?

熊猫版本:1.1.5 numpy 版本:1.24.4

这是我的号码: 12.00000 12.00000 12.00000 12.00000 12.00000 0.00000 0.00000 0.00000 0.00000 0.00000 12.00000 12.00000 12.00000

我想知道为什么会出错以及应该采取什么措施来修复它? 谢谢你的帮助

python pandas numpy
1个回答
0
投票

您遇到的问题是由于在代码中使用了

np.where
函数造成的。当
np.where
为 0 时,
df_score['number'] != 0
函数无法正确处理
df_score['number']
条件。

要解决此问题,您可以使用具有不同条件的

numpy.where
函数。您可以使用
df_score['number'] != 0
代替
df_score['number'] > 0
。这将确保仅当
df_score['number']
大于 0 时才满足条件,从而避免 ZeroDivisionError。

以下是如何修改代码的示例:

import numpy as np

np.where(df_score['number'] > 0, 100 - ((100 * df_score[rank_column] -50)/df_score['number']), None)

通过使用

df_score['number'] > 0
,您可以确保仅当
df_score['number']
大于 0 时才执行除法运算,从而避免 ZeroDivisionError。

© www.soinside.com 2019 - 2024. All rights reserved.