From bebdeb212c45b17b47d10eeaf596655ace29b6ea Mon Sep 17 00:00:00 2001 From: Arrhenius Impostor Date: Tue, 16 Jan 2024 21:45:45 +0100 Subject: [PATCH] Added a test that breaks over Series.rank with nullable ints --- pandas/tests/series/methods/test_rank.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pandas/tests/series/methods/test_rank.py b/pandas/tests/series/methods/test_rank.py index 776c5633cb4b3..8021c0a51f5d6 100644 --- a/pandas/tests/series/methods/test_rank.py +++ b/pandas/tests/series/methods/test_rank.py @@ -248,6 +248,23 @@ def test_rank_tie_methods(self, ser, results, dtype): result = ser.rank(method=method) tm.assert_series_equal(result, Series(exp)) + @pytest.mark.parametrize('dtype', ['Int64', 'UInt64']) #Full set of dtypes not necessary + def test_rank_with_nullable_int(self, dtype, ser, results): + if dtype == 'int64': pytest.skip("Irrelevant dtype for this test.") + method, exp = results + ser = ser.astype(dtype) + result = ser.rank(method=method) + # cast dtype, because pyarrow input leads to different output type + if 'pyarrow' in dtype: + if method == 'average': + exp = Series(exp, dtype='double[pyarrow]') + else: + exp = Series(exp, dtype='uint64[pyarrow]') + + else: + exp = Series(exp) + tm.assert_series_equal(result, exp) + @pytest.mark.parametrize("na_option", ["top", "bottom", "keep"]) @pytest.mark.parametrize( "dtype, na_value, pos_inf, neg_inf",