diff --git a/pandas/core/arrays/sparse/array.py b/pandas/core/arrays/sparse/array.py index 4847372f18239..6ab296b314615 100644 --- a/pandas/core/arrays/sparse/array.py +++ b/pandas/core/arrays/sparse/array.py @@ -1397,7 +1397,7 @@ def max(self, axis=0, *args, **kwargs): # This condition returns a nan if there are no valid values in the array. if self.size > 0 and self._valid_sp_values.size == 0: - return np.nan + return self.fill_value else: return np.nanmax(self, axis) @@ -1406,7 +1406,7 @@ def min(self, axis=0, *args, **kwargs): # This condition returns a nan if there are no valid values in the array. if self.size > 0 and self._valid_sp_values.size == 0: - return np.nan + return self.fill_value else: return np.nanmin(self, axis) diff --git a/pandas/tests/arrays/sparse/test_array.py b/pandas/tests/arrays/sparse/test_array.py index b29855caf6c1d..1cc8a2df44812 100644 --- a/pandas/tests/arrays/sparse/test_array.py +++ b/pandas/tests/arrays/sparse/test_array.py @@ -1326,6 +1326,9 @@ class TestMinMax: data_neg = plain_data * (-1) data_NaN = SparseArray(np.array([0, 1, 2, np.nan, 4])) data_all_NaN = SparseArray(np.array([np.nan, np.nan, np.nan, np.nan, np.nan])) + data_NA_filled = SparseArray( + np.array([np.nan, np.nan, np.nan, np.nan, np.nan]), fill_value=5 + ) @pytest.mark.parametrize( "raw_data,max_expected,min_expected", @@ -1334,6 +1337,7 @@ class TestMinMax: (data_neg, [0], [-4]), (data_NaN, [4], [0]), (data_all_NaN, [np.nan], [np.nan]), + (data_NA_filled, [5], [5]), ], ) def test_maxmin(self, raw_data, max_expected, min_expected):