Skip to content

Commit a9b6e5f

Browse files
authored
REF: disambiguate get_loc_level k variable (#42378)
1 parent 9ffc924 commit a9b6e5f

File tree

2 files changed

+24
-23
lines changed

2 files changed

+24
-23
lines changed

pandas/core/generic.py

+6-12
Original file line numberDiff line numberDiff line change
@@ -3765,18 +3765,12 @@ class animal locomotion
37653765
self._consolidate_inplace()
37663766

37673767
if isinstance(index, MultiIndex):
3768-
try:
3769-
loc, new_index = index._get_loc_level(key, level=0)
3770-
except TypeError as err:
3771-
raise TypeError(
3772-
f"Expected label or tuple of labels, got {key}"
3773-
) from err
3774-
else:
3775-
if not drop_level:
3776-
if lib.is_integer(loc):
3777-
new_index = index[loc : loc + 1]
3778-
else:
3779-
new_index = index[loc]
3768+
loc, new_index = index._get_loc_level(key, level=0)
3769+
if not drop_level:
3770+
if lib.is_integer(loc):
3771+
new_index = index[loc : loc + 1]
3772+
else:
3773+
new_index = index[loc]
37803774
else:
37813775
loc = index.get_loc(key)
37823776

pandas/core/indexes/multi.py

+18-11
Original file line numberDiff line numberDiff line change
@@ -2988,6 +2988,7 @@ def maybe_mi_droplevels(indexer, levels):
29882988
if isinstance(key, tuple) and level == 0:
29892989

29902990
try:
2991+
# Check if this tuple is a single key in our first level
29912992
if key in self.levels[0]:
29922993
indexer = self._get_level_indexer(key, level=level)
29932994
new_index = maybe_mi_droplevels(indexer, [0])
@@ -3021,19 +3022,25 @@ def maybe_mi_droplevels(indexer, levels):
30213022
indexer = None
30223023
for i, k in enumerate(key):
30233024
if not isinstance(k, slice):
3024-
k = self._get_level_indexer(k, level=i)
3025-
if isinstance(k, slice):
3026-
# everything
3027-
if k.start == 0 and k.stop == len(self):
3028-
k = slice(None, None)
3025+
loc_level = self._get_level_indexer(k, level=i)
3026+
if isinstance(loc_level, slice):
3027+
if com.is_null_slice(loc_level) or com.is_full_slice(
3028+
loc_level, len(self)
3029+
):
3030+
# everything
3031+
continue
3032+
else:
3033+
raise TypeError(
3034+
f"Expected label or tuple of labels, got {key}"
3035+
)
30293036
else:
3030-
k_index = k
3037+
k_index = loc_level
30313038

3032-
if isinstance(k, slice):
3033-
if k == slice(None, None):
3034-
continue
3035-
else:
3036-
raise TypeError(key)
3039+
elif com.is_null_slice(k):
3040+
# taking everything, does not affect `indexer` below
3041+
continue
3042+
else:
3043+
raise TypeError(f"Expected label or tuple of labels, got {key}")
30373044

30383045
if indexer is None:
30393046
indexer = k_index

0 commit comments

Comments
 (0)