@@ -500,34 +500,33 @@ def __init__(
500
500
# use Index instead of ndarray so we can recover the name
501
501
self .grouper = Index (ng , name = newgrouper .result_index .name )
502
502
503
- else :
503
+ elif is_categorical_dtype ( self . grouper ) :
504
504
# a passed Categorical
505
- if is_categorical_dtype (self .grouper ):
506
- self ._passed_categorical = True
505
+ self ._passed_categorical = True
507
506
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
+ )
511
510
511
+ elif not isinstance (self .grouper , (Series , Index , ExtensionArray , np .ndarray )):
512
512
# 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 )
515
522
):
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 )
531
530
532
531
if isinstance (self .grouper , np .ndarray ):
533
532
# if we have a date/time-like grouper, make sure that we have
@@ -555,6 +554,7 @@ def name(self) -> Hashable:
555
554
elif isinstance (self .grouper , Index ):
556
555
return self .grouper .name
557
556
557
+ # otherwise we have ndarray or ExtensionArray -> no name
558
558
return None
559
559
560
560
@cache_readonly
0 commit comments