@@ -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)\n result: { 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)\n result: { 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