From f8c35cac30800d04a906a83873cbccd2061930d0 Mon Sep 17 00:00:00 2001 From: Irv Lustig Date: Sun, 11 Sep 2022 21:25:24 -0400 Subject: [PATCH 1/2] fix loc on mi with slice --- pandas-stubs/core/frame.pyi | 3 ++- tests/test_frame.py | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index 186a45419..064d18536 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -140,7 +140,8 @@ class _LocIndexerFrame(_LocIndexer): | MaskType | slice | list[HashableT] - | tuple[str | int | slice, ...], + | tuple[str | int | slice, ...] + | Hashable, list[HashableT] | slice | Series[bool] | Callable, ], ) -> DataFrame: ... diff --git a/tests/test_frame.py b/tests/test_frame.py index b54adfb07..1ccb6b592 100644 --- a/tests/test_frame.py +++ b/tests/test_frame.py @@ -1741,3 +1741,12 @@ def test_xs_key() -> None: check( assert_type(df.xs(0, level="foo"), Union[pd.DataFrame, pd.Series]), pd.DataFrame ) + + +def test_loc_slice() -> None: + # GH 277 + df1 = pd.DataFrame( + {"x": [1, 2, 3, 4]}, + index=pd.MultiIndex.from_product([[1, 2], ["a", "b"]], names=["num", "let"]), + ) + check(assert_type(df1.loc[1, :], pd.DataFrame), pd.DataFrame) From 60d6f222f790f9b927ad315b403240a0da79502d Mon Sep 17 00:00:00 2001 From: Irv Lustig Date: Mon, 12 Sep 2022 08:14:33 -0400 Subject: [PATCH 2/2] remove tuple and slice as first part of tuple for loc.getitem --- pandas-stubs/core/frame.pyi | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index 064d18536..a68a4f589 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -136,12 +136,7 @@ class _LocIndexerFrame(_LocIndexer): | MaskType | list[HashableT] | tuple[ - IndexType - | MaskType - | slice - | list[HashableT] - | tuple[str | int | slice, ...] - | Hashable, + IndexType | MaskType | list[HashableT] | Hashable, list[HashableT] | slice | Series[bool] | Callable, ], ) -> DataFrame: ...