diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index 04617926ae110..e556dc5f970eb 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -4192,8 +4192,7 @@ def dispatch_missing(op, left, right, result): result = missing.fill_zeros(result, left, right, opstr, np.nan) elif op is divmod: - res0 = missing.fill_zeros(result[0], left, right, - opstr, np.nan) + res0 = missing.mask_zero_div_zero(left, right, result[0]) res1 = missing.fill_zeros(result[1], left, right, opstr, np.nan) result = (res0, res1) diff --git a/pandas/tests/indexes/test_numeric.py b/pandas/tests/indexes/test_numeric.py index d3c80d5cec20a..67fa76cf92152 100644 --- a/pandas/tests/indexes/test_numeric.py +++ b/pandas/tests/indexes/test_numeric.py @@ -197,6 +197,19 @@ def test_mod_zero(self, zero): ser_compat = Series(idx).astype('i8') % np.array(zero).astype('i8') tm.assert_series_equal(ser_compat, Series(result)) + @pytest.mark.parametrize('zero', zeros) + def test_divmod_zero(self, zero): + idx = self.create_index() + + exleft = Index([np.nan, np.inf, np.inf, np.inf, np.inf], + dtype=np.float64) + exright = Index([np.nan, np.nan, np.nan, np.nan, np.nan], + dtype=np.float64) + + result = divmod(idx, zero) + tm.assert_index_equal(result[0], exleft) + tm.assert_index_equal(result[1], exright) + def test_explicit_conversions(self): # GH 8608