一行中的零除法导致所有其他行中的错误 Pandas

Zero Division in one row causing error in all other rows Pandas

考虑这个 df 的两列:

    ColA        ColB    
0   0.0         0.0     
1   5.523288    0.0     
2   6.115068    0.0     
3   6.90411     1.0     
4   9.172603    2.0     
5   10.849315   2.0     
6   12.230137   0.0     
7   11.210959   0.0     
8   10.849315   1.0     
9   2.169863    0.0     

正在尝试以这种方式生成计算列:

df['Result'] = df['ColB']/df['ColA']

此尝试按预期引发 'float division by zero' 错误,因为第一行中的计算是除以零。看到了这个然后做了这个来临时浏览:

try:
     df['Result'] = df['ColB']/df['ColA']
except ZeroDivisionError:
     df['Result'] = 0

然而,此代码始终产生此结果(即所有行均为零)

        ColA        ColB   Result    
    0   0.0         0.0     0
    1   5.523288    0.0     0
    2   6.115068    0.0     0
    3   6.90411     1.0     0
    4   9.172603    2.0     0
    5   10.849315   2.0     0
    6   12.230137   0.0     0
    7   11.210959   0.0     0
    8   10.849315   1.0     0
    9   2.169863    0.0     0

从索引第 3 行开始,结果列应该生成不只是零的浮点值。我还在上面的尝试中插入了“一些错误”,除了结果列中的所有值都显示“一些错误”。

我不知道为什么 pandas 没有绕过错误并在适当的行中产生有效结果。

试试这个 -

df['Result'] = (df['ColB']/df['ColA']).fillna(0)
        ColA  ColB    Result
0   0.000000   0.0  0.000000
1   5.523288   0.0  0.000000
2   6.115068   0.0  0.000000
3   6.904110   1.0  0.144841
4   9.172603   2.0  0.218041
5  10.849315   2.0  0.184343
6  12.230137   0.0  0.000000
7  11.210959   0.0  0.000000
8  10.849315   1.0  0.092172
9   2.169863   0.0  0.000000

查看 documentation here


对此 -

try:
     df['Result'] = df['ColB']/df['ColA']
except ZeroDivisionError:
     df['Result'] = 0

我实际上无法重现您所面临的结果。这是我得到的如预期

        ColA  ColB    Result
0   0.000000   0.0       NaN #<- 0/0 still throws nan
1   5.523288   0.0  0.000000 #<- divide by 0 
2   6.115068   0.0  0.000000
3   6.904110   1.0  0.144841
4   9.172603   2.0  0.218041
5  10.849315   2.0  0.184343
6  12.230137   0.0  0.000000 #<- divide by 0
7  11.210959   0.0  0.000000
8  10.849315   1.0  0.092172
9   2.169863   0.0  0.000000