Skip to content

Commit 60c90fe

Browse files
committed
CLN: Remove _update_indexer function
1 parent 07d5a07 commit 60c90fe

File tree

1 file changed

+17
-16
lines changed

1 file changed

+17
-16
lines changed

pandas/core/indexes/multi.py

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3048,18 +3048,19 @@ def _update_indexer(idxr, indexer=indexer):
30483048
return idxr & indexer
30493049

30503050
need_sort = False
3051+
indexer = Index(np.arange(n))
30513052
for i, k in enumerate(reversed(seq)):
30523053
i = len(seq) - 1 - i # Counting in reverse
30533054

30543055
if com.is_bool_indexer(k):
30553056
# a boolean indexer, must be the same length!
30563057
k = np.asarray(k)
3057-
indexer = _update_indexer(_convert_to_indexer(k), indexer=indexer)
3058+
indexer = _convert_to_indexer(k) & indexer
30583059

30593060
elif is_list_like(k):
30603061
# a collection of labels to include from this level (these
30613062
# are or'd)
3062-
indexers = None
3063+
indexers_union = None
30633064
if not need_sort:
30643065
# Find out if the list_like label are sorted as the levels or not
30653066
k_codes = np.array(
@@ -3076,45 +3077,45 @@ def _update_indexer(idxr, indexer=indexer):
30763077
# ordered as previously seen indexes
30773078
idxrs = indexer.intersection(idxrs)
30783079

3079-
indexers = (
3080+
indexers_union = (
30803081
idxrs
3081-
if indexers is None
3082-
else indexers.union(idxrs, sort=False)
3082+
if indexers_union is None
3083+
else indexers_union.union(idxrs, sort=False)
30833084
)
30843085
except KeyError:
30853086
# ignore not founds
30863087
continue
30873088

3088-
if indexers is not None:
3089+
if indexers_union is not None:
30893090
if need_sort:
3090-
indexer = indexers
3091+
indexer = indexers_union
30913092
else:
3092-
indexer = _update_indexer(indexers, indexer=indexer)
3093+
indexer = indexers_union & indexer
30933094
else:
30943095
# no matches we are done
30953096
return Int64Index([])._ndarray_values
30963097

30973098
elif com.is_null_slice(k):
30983099
# empty slice
30993100
# index is given to conserve the order of this level
3100-
indexer = _update_indexer(Int64Index(np.arange(n)), indexer=indexer)
3101+
# See test TestMultiIndexSlicers.test_per_axis_per_level_doc_examples in tests/indexings
3102+
indexer = Int64Index(np.arange(n)) & indexer
31013103

31023104
elif isinstance(k, slice):
3103-
31043105
# a slice, include BOTH of the labels
3105-
indexer = _update_indexer(
3106+
indexer = (
31063107
_convert_to_indexer(
31073108
self._get_level_indexer(k, level=i, indexer=indexer)
3108-
),
3109-
indexer=indexer,
3109+
)
3110+
& indexer
31103111
)
31113112
else:
31123113
# a single label
3113-
indexer = _update_indexer(
3114+
indexer = (
31143115
_convert_to_indexer(
31153116
self.get_loc_level(k, level=i, drop_level=False)[0]
3116-
),
3117-
indexer=indexer,
3117+
)
3118+
& indexer
31183119
)
31193120

31203121
# empty indexer

0 commit comments

Comments
 (0)