在熊猫计算中处理零除

Sum*_*ena 3 python divide-by-zero pandas

我有以下数据:

a = pd.Series([1, 2, 3])
b = pd.Series([0, 0, 0])
Run Code Online (Sandbox Code Playgroud)

如果被零除,在某些情况下我想

  1. 将结果设置为系列之一
  2. 将结果设置为特定值

但是以下给出了“意外”结果:

a.div(b, fill_value = 0)
0    inf
1    inf
2    inf

a.div(b).fillna(0)
0    inf
1    inf
2    inf

a.div(b).combine_first(a)
0    inf
1    inf
2    inf
Run Code Online (Sandbox Code Playgroud)

我想到达:

情况1:将数据设置为特定值

0    0
1    0
2    0
Run Code Online (Sandbox Code Playgroud)

情况2:将值设置为特定的序列

0    1
1    2
2    3
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 7

df.replace分割后可以使用:

(a / b).replace(np.inf, 0)

0    0.0
1    0.0
2    0.0
dtype: float64

(a / b).replace(np.inf, a)

0    1.0
1    2.0
2    3.0
dtype: float64
Run Code Online (Sandbox Code Playgroud)

是否也想处理负无穷大?你需要:

(a / b).replace((np.inf, -np.inf), (a, a))
Run Code Online (Sandbox Code Playgroud)