python-3.x - ZeroDivisionError : float division by zero (python 3. 6)

标签 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”列仅用于说明。

最佳答案

正如@Divakar 所评论的,当您使用 np.where 时,仍然对两个系列中的所有值进行全面评估;为避免被零除,您可以将零转换为 nan在除法之前,因为任何值除以 nannan :

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 版本是什么,在 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

关于python-3.x - ZeroDivisionError : float division by zero (python 3. 6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46347411/

相关文章:

python - Conda 骨架 pypi 因 pmdarima 而失败——AttributeError numpy disutils

numpy - 从 numpy C API 读取许多值

python - 如何修复 Sagemath 中函数 mod 的错误?

python - 亚搏体育appGitLab CE API : Check if used token has admin rights

python - 如何将数字添加到基于另一列的列? (字典)

python - 使用可变数量的元素和前导文本扩展 pandas 数据框的列

python - 在两个 numpy 数组之间找到绝对最小值但保留符号

python - List vs Dictionary vs Set用于查找数字出现的次数

python - 在 Python 3 中使用 for 循环查找字符串中的值

python - 将椭圆拟合到python中的一组数据点