ZeroDivisionError:浮点除零(python 3.6)

时间:2017-09-21 15:07:00

标签: python-3.x pandas numpy

我使用下面的代码来绕过除零错误仍然得到一个错误,无法弄清楚这里究竟出了什么问题。

df.loc[:,'B to A Ratio'] =np.where(df.loc[:,'A']!=0,df.loc[:,'B']/df.loc[:,'A'],np.nan)

仅供参考,我在从数据透视表创建的数据框上执行此操作。列'A'和'这里的'B'仅用于插图。

1 个答案:

答案 0 :(得分:2)

正如@Divakar评论的那样,当你使用np.where时,仍然会对两个系列中的所有值进行完全评估。为避免除以零,您可以在除法前将零转换为nan,因为任何除以nan的值都会给nan

df = pd.DataFrame({
        "A": [1,2,0,3,4],
        "B": [0,2,1,0,1]
    })
​
df.B.div(df.A.where(df.A != 0, np.nan))

#0    0.00
#1    1.00
#2     NaN
#3    0.00
#4    0.25
#dtype: float64

也不确定你的熊猫版本是什么,在pandas 0.19~0.​​20中除以零得到inf而不是引发错误

df.B / df.A

#0    0.000000
#1    1.000000
#2         inf
#3    0.000000
#4    0.250000
#dtype: float64