Skip to content

Commit e35c0c4

Browse files
authored
CLN: Remove Index._get_grouper_for_level (#49690)
1 parent d1d8b66 commit e35c0c4

File tree

3 files changed

+7
-81
lines changed

3 files changed

+7
-81
lines changed

pandas/core/groupby/grouper.py

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -472,19 +472,19 @@ def __init__(
472472

473473
ilevel = self._ilevel
474474
if ilevel is not None:
475-
mapper = self.grouping_vector
476475
# In extant tests, the new self.grouping_vector matches
477476
# `index.get_level_values(ilevel)` whenever
478477
# mapper is None and isinstance(index, MultiIndex)
479478
if isinstance(index, MultiIndex):
480479
index_level = index.get_level_values(ilevel)
481480
else:
482481
index_level = index
483-
(
484-
self.grouping_vector, # Index
485-
self._codes,
486-
self._group_index,
487-
) = index_level._get_grouper_for_level(mapper, dropna=dropna)
482+
483+
if self.grouping_vector is None:
484+
self.grouping_vector = index_level
485+
else:
486+
mapper = self.grouping_vector
487+
self.grouping_vector = index_level.map(mapper)
488488

489489
# a passed Grouper like, directly get the grouper in the same way
490490
# as single grouper groupby, use the group_info to get codes
@@ -600,10 +600,6 @@ def indices(self) -> dict[Hashable, npt.NDArray[np.intp]]:
600600

601601
@property
602602
def codes(self) -> npt.NDArray[np.signedinteger]:
603-
if self._codes is not None:
604-
# _codes is set in __init__ for MultiIndex cases
605-
return self._codes
606-
607603
return self._codes_and_uniques[0]
608604

609605
@cache_readonly
@@ -612,11 +608,7 @@ def group_arraylike(self) -> ArrayLike:
612608
Analogous to result_index, but holding an ArrayLike to ensure
613609
we can retain ExtensionDtypes.
614610
"""
615-
if self._group_index is not None:
616-
# _group_index is set in __init__ for MultiIndex cases
617-
return self._group_index._values
618-
619-
elif self._all_grouper is not None:
611+
if self._all_grouper is not None:
620612
# retain dtype for categories, including unobserved ones
621613
return self.result_index._values
622614

@@ -636,10 +628,6 @@ def result_index(self) -> Index:
636628

637629
@cache_readonly
638630
def group_index(self) -> Index:
639-
if self._group_index is not None:
640-
# _group_index is set in __init__ for MultiIndex cases
641-
return self._group_index
642-
643631
uniques = self._codes_and_uniques[1]
644632
return Index._with_infer(uniques, name=self.name)
645633

pandas/core/indexes/base.py

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2062,42 +2062,6 @@ def _drop_level_numbers(self, levnums: list[int]):
20622062
verify_integrity=False,
20632063
)
20642064

2065-
def _get_grouper_for_level(
2066-
self,
2067-
mapper,
2068-
*,
2069-
level=None,
2070-
dropna: bool = True,
2071-
) -> tuple[Index, npt.NDArray[np.signedinteger] | None, Index | None]:
2072-
"""
2073-
Get index grouper corresponding to an index level
2074-
2075-
Parameters
2076-
----------
2077-
mapper: Group mapping function or None
2078-
Function mapping index values to groups
2079-
level : int or None
2080-
Index level, positional
2081-
dropna : bool
2082-
dropna from groupby
2083-
2084-
Returns
2085-
-------
2086-
grouper : Index
2087-
Index of values to group on.
2088-
labels : ndarray of int or None
2089-
Array of locations in level_index.
2090-
uniques : Index or None
2091-
Index of unique values for level.
2092-
"""
2093-
assert level is None or level == 0
2094-
if mapper is None:
2095-
grouper = self
2096-
else:
2097-
grouper = self.map(mapper)
2098-
2099-
return grouper, None, None
2100-
21012065
# --------------------------------------------------------------------
21022066
# Introspection Methods
21032067

pandas/core/indexes/multi.py

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1458,32 +1458,6 @@ def _set_names(self, names, *, level=None, validate: bool = True):
14581458

14591459
# --------------------------------------------------------------------
14601460

1461-
@doc(Index._get_grouper_for_level)
1462-
def _get_grouper_for_level(
1463-
self,
1464-
mapper,
1465-
*,
1466-
level=None,
1467-
dropna: bool = True,
1468-
) -> tuple[Index, npt.NDArray[np.signedinteger] | None, Index | None]:
1469-
if mapper is not None:
1470-
indexer = self.codes[level]
1471-
# Handle group mapping function and return
1472-
level_values = self.levels[level].take(indexer)
1473-
grouper = level_values.map(mapper)
1474-
return grouper, None, None
1475-
1476-
values = self.get_level_values(level)
1477-
codes, uniques = algos.factorize(values, sort=True, use_na_sentinel=dropna)
1478-
assert isinstance(uniques, Index)
1479-
1480-
if self.levels[level]._can_hold_na:
1481-
grouper = uniques.take(codes, fill_value=True)
1482-
else:
1483-
grouper = uniques.take(codes)
1484-
1485-
return grouper, codes, uniques
1486-
14871461
@cache_readonly
14881462
def inferred_type(self) -> str:
14891463
return "mixed"

0 commit comments

Comments
 (0)