Skip to content

Commit d220989

Browse files
authored
REF: simplify Grouping.__init__ (#41528)
1 parent 09f3bf8 commit d220989

File tree

1 file changed

+23
-23
lines changed

1 file changed

+23
-23
lines changed

pandas/core/groupby/grouper.py

+23-23
Original file line numberDiff line numberDiff line change
@@ -500,34 +500,33 @@ def __init__(
500500
# use Index instead of ndarray so we can recover the name
501501
self.grouper = Index(ng, name=newgrouper.result_index.name)
502502

503-
else:
503+
elif is_categorical_dtype(self.grouper):
504504
# a passed Categorical
505-
if is_categorical_dtype(self.grouper):
506-
self._passed_categorical = True
505+
self._passed_categorical = True
507506

508-
self.grouper, self.all_grouper = recode_for_groupby(
509-
self.grouper, self.sort, observed
510-
)
507+
self.grouper, self.all_grouper = recode_for_groupby(
508+
self.grouper, self.sort, observed
509+
)
511510

511+
elif not isinstance(self.grouper, (Series, Index, ExtensionArray, np.ndarray)):
512512
# no level passed
513-
elif not isinstance(
514-
self.grouper, (Series, Index, ExtensionArray, np.ndarray)
513+
if getattr(self.grouper, "ndim", 1) != 1:
514+
t = self.name or str(type(self.grouper))
515+
raise ValueError(f"Grouper for '{t}' not 1-dimensional")
516+
517+
self.grouper = self.index.map(self.grouper)
518+
519+
if not (
520+
hasattr(self.grouper, "__len__")
521+
and len(self.grouper) == len(self.index)
515522
):
516-
if getattr(self.grouper, "ndim", 1) != 1:
517-
t = self.name or str(type(self.grouper))
518-
raise ValueError(f"Grouper for '{t}' not 1-dimensional")
519-
self.grouper = self.index.map(self.grouper)
520-
if not (
521-
hasattr(self.grouper, "__len__")
522-
and len(self.grouper) == len(self.index)
523-
):
524-
grper = pprint_thing(self.grouper)
525-
errmsg = (
526-
"Grouper result violates len(labels) == "
527-
f"len(data)\nresult: {grper}"
528-
)
529-
self.grouper = None # Try for sanity
530-
raise AssertionError(errmsg)
523+
grper = pprint_thing(self.grouper)
524+
errmsg = (
525+
"Grouper result violates len(labels) == "
526+
f"len(data)\nresult: {grper}"
527+
)
528+
self.grouper = None # Try for sanity
529+
raise AssertionError(errmsg)
531530

532531
if isinstance(self.grouper, np.ndarray):
533532
# if we have a date/time-like grouper, make sure that we have
@@ -555,6 +554,7 @@ def name(self) -> Hashable:
555554
elif isinstance(self.grouper, Index):
556555
return self.grouper.name
557556

557+
# otherwise we have ndarray or ExtensionArray -> no name
558558
return None
559559

560560
@cache_readonly

0 commit comments

Comments
 (0)