I have the following data:
a = pd.Series([1, 2, 3])
b = pd.Series([0, 0, 0])
If there is a division by zero I want to in some cases
But the following give "unexpected" results:
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
I want to arrive at:
case 1: set the data to a specific value
0 0
1 0
2 0
case 2: set the value to a specific series
0 1
1 2
2 3
You can use df.replace
after division:
(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
Want to handle negative infinity too? You'll need:
(a / b).replace((np.inf, -np.inf), (a, a))