From 0e20ee877853ef6a22dc906e96b3ce2f1d359b2d Mon Sep 17 00:00:00 2001 From: Patrick Hoefler Date: Sat, 19 Aug 2023 16:51:53 +0200 Subject: [PATCH] BUG: getitem indexing wrong axis --- pandas/core/indexing.py | 3 ++- pandas/tests/frame/indexing/test_getitem.py | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index ca0b1705b5c38..a2871f364f092 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -985,8 +985,9 @@ def _getitem_tuple_same_dim(self, tup: tuple): """ retval = self.obj # Selecting columns before rows is signficiantly faster + start_val = (self.ndim - len(tup)) + 1 for i, key in enumerate(reversed(tup)): - i = self.ndim - i - 1 + i = self.ndim - i - start_val if com.is_null_slice(key): continue diff --git a/pandas/tests/frame/indexing/test_getitem.py b/pandas/tests/frame/indexing/test_getitem.py index 9fed2116b2896..9d9324f557c8d 100644 --- a/pandas/tests/frame/indexing/test_getitem.py +++ b/pandas/tests/frame/indexing/test_getitem.py @@ -458,6 +458,14 @@ def test_getitem_datetime_slice(self): ): df["2011-01-01":"2011-11-01"] + def test_getitem_slice_same_dim_only_one_axis(self): + # GH#54622 + df = DataFrame(np.random.default_rng(2).standard_normal((10, 8))) + result = df.iloc[(slice(None, None, 2),)] + assert result.shape == (5, 8) + expected = df.iloc[slice(None, None, 2), slice(None)] + tm.assert_frame_equal(result, expected) + class TestGetitemDeprecatedIndexers: @pytest.mark.parametrize("key", [{"a", "b"}, {"a": "a"}])