在我的代码中,我对数据框中的列使用以下计算:
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
我想知道为什么会出错以及应该采取什么措施来修复它? 谢谢你的帮助
您遇到的问题是由于在代码中使用了
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。