Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x ZeroDivisionError:浮点除以零(python 3.6)_Python 3.x_Pandas_Numpy - Fatal编程技术网

Python 3.x ZeroDivisionError:浮点除以零(python 3.6)

Python 3.x ZeroDivisionError:浮点除以零(python 3.6),python-3.x,pandas,numpy,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时,仍然会对两个系列中的所有值进行完整的除法计算;为了避免被零除,您可以在除法之前将零转换为nan,因为被na

我正在使用下面的代码绕过被零除的错误,仍然得到一,无法找出这里到底出了什么问题

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

仅供参考,我正在从数据透视表创建的数据帧上执行此操作。此处的“A”列和“B”列仅用于说明。

正如@Divakar所评论的,当您使用
np时,仍然会对两个系列中的所有值进行完整的除法计算;为了避免被零除,您可以在除法之前将零转换为
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版本是什么,在pandas 0.19~0.20中除以0得到
inf
,而不是产生错误

df.B / df.A

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

因为您仍然在以下位置执行零除法:
df.loc[:,'B']/df.loc[:,'A']
<代码>np。此后在哪里
进行选择。谢谢,这很有效!,或者,我使用了下面的代码:data['B to A Ratio']=data.apply(lambda x:x['B']/x['A']如果x['A']!=0 else np.nan,axis=1)我使用的是pandas版本0.20.1,它没有给出infI没有
0.20.1
。但是
0.19.2
0.20.3
确实给出了
inf
。也许您正在分割numpy数组而不是熊猫系列,在这种情况下,我会收到警告消息。