@@ -455,7 +455,7 @@ def __init__(
455
455
):
456
456
self .level = level
457
457
self ._orig_grouper = grouper
458
- self .grouper = _convert_grouper (index , grouper )
458
+ self .grouping_vector = _convert_grouper (index , grouper )
459
459
self .all_grouper = None
460
460
self .index = index
461
461
self .sort = sort
@@ -472,19 +472,19 @@ def __init__(
472
472
ilevel = self ._ilevel
473
473
if ilevel is not None :
474
474
(
475
- self .grouper , # Index
475
+ self .grouping_vector , # Index
476
476
self ._codes ,
477
477
self ._group_index ,
478
- ) = index ._get_grouper_for_level (self .grouper , ilevel )
478
+ ) = index ._get_grouper_for_level (self .grouping_vector , ilevel )
479
479
480
480
# a passed Grouper like, directly get the grouper in the same way
481
481
# as single grouper groupby, use the group_info to get codes
482
- elif isinstance (self .grouper , Grouper ):
482
+ elif isinstance (self .grouping_vector , Grouper ):
483
483
# get the new grouper; we already have disambiguated
484
484
# what key/level refer to exactly, don't need to
485
485
# check again as we have by this point converted these
486
486
# to an actual value (rather than a pd.Grouper)
487
- _ , newgrouper , newobj = self .grouper ._get_grouper (
487
+ _ , newgrouper , newobj = self .grouping_vector ._get_grouper (
488
488
# error: Value of type variable "FrameOrSeries" of "_get_grouper"
489
489
# of "Grouper" cannot be "Optional[FrameOrSeries]"
490
490
self .obj , # type: ignore[type-var]
@@ -495,44 +495,46 @@ def __init__(
495
495
ng = newgrouper ._get_grouper ()
496
496
if isinstance (newgrouper , ops .BinGrouper ):
497
497
# in this case we have `ng is newgrouper`
498
- self .grouper = ng
498
+ self .grouping_vector = ng
499
499
else :
500
500
# ops.BaseGrouper
501
501
# use Index instead of ndarray so we can recover the name
502
- self .grouper = Index (ng , name = newgrouper .result_index .name )
502
+ self .grouping_vector = Index (ng , name = newgrouper .result_index .name )
503
503
504
- elif is_categorical_dtype (self .grouper ):
504
+ elif is_categorical_dtype (self .grouping_vector ):
505
505
# a passed Categorical
506
506
self ._passed_categorical = True
507
507
508
- self .grouper , self .all_grouper = recode_for_groupby (
509
- self .grouper , self .sort , observed
508
+ self .grouping_vector , self .all_grouper = recode_for_groupby (
509
+ self .grouping_vector , self .sort , observed
510
510
)
511
511
512
- elif not isinstance (self .grouper , (Series , Index , ExtensionArray , np .ndarray )):
512
+ elif not isinstance (
513
+ self .grouping_vector , (Series , Index , ExtensionArray , np .ndarray )
514
+ ):
513
515
# no level passed
514
- if getattr (self .grouper , "ndim" , 1 ) != 1 :
515
- t = self .name or str (type (self .grouper ))
516
+ if getattr (self .grouping_vector , "ndim" , 1 ) != 1 :
517
+ t = self .name or str (type (self .grouping_vector ))
516
518
raise ValueError (f"Grouper for '{ t } ' not 1-dimensional" )
517
519
518
- self .grouper = self .index .map (self .grouper )
520
+ self .grouping_vector = self .index .map (self .grouping_vector )
519
521
520
522
if not (
521
- hasattr (self .grouper , "__len__" )
522
- and len (self .grouper ) == len (self .index )
523
+ hasattr (self .grouping_vector , "__len__" )
524
+ and len (self .grouping_vector ) == len (self .index )
523
525
):
524
- grper = pprint_thing (self .grouper )
526
+ grper = pprint_thing (self .grouping_vector )
525
527
errmsg = (
526
528
"Grouper result violates len(labels) == "
527
529
f"len(data)\n result: { grper } "
528
530
)
529
- self .grouper = None # Try for sanity
531
+ self .grouping_vector = None # Try for sanity
530
532
raise AssertionError (errmsg )
531
533
532
- if isinstance (self .grouper , np .ndarray ):
534
+ if isinstance (self .grouping_vector , np .ndarray ):
533
535
# if we have a date/time-like grouper, make sure that we have
534
536
# Timestamps like
535
- self .grouper = sanitize_to_nanoseconds (self .grouper )
537
+ self .grouping_vector = sanitize_to_nanoseconds (self .grouping_vector )
536
538
537
539
def __repr__ (self ) -> str :
538
540
return f"Grouping({ self .name } )"
@@ -549,11 +551,11 @@ def name(self) -> Hashable:
549
551
if isinstance (self ._orig_grouper , (Index , Series )):
550
552
return self ._orig_grouper .name
551
553
552
- elif isinstance (self .grouper , ops .BaseGrouper ):
553
- return self .grouper .result_index .name
554
+ elif isinstance (self .grouping_vector , ops .BaseGrouper ):
555
+ return self .grouping_vector .result_index .name
554
556
555
- elif isinstance (self .grouper , Index ):
556
- return self .grouper .name
557
+ elif isinstance (self .grouping_vector , Index ):
558
+ return self .grouping_vector .name
557
559
558
560
# otherwise we have ndarray or ExtensionArray -> no name
559
561
return None
@@ -580,10 +582,10 @@ def ngroups(self) -> int:
580
582
@cache_readonly
581
583
def indices (self ):
582
584
# we have a list of groupers
583
- if isinstance (self .grouper , ops .BaseGrouper ):
584
- return self .grouper .indices
585
+ if isinstance (self .grouping_vector , ops .BaseGrouper ):
586
+ return self .grouping_vector .indices
585
587
586
- values = Categorical (self .grouper )
588
+ values = Categorical (self .grouping_vector )
587
589
return values ._reverse_indexer ()
588
590
589
591
@property
@@ -624,7 +626,7 @@ def _codes_and_uniques(self) -> tuple[np.ndarray, ArrayLike]:
624
626
if self ._passed_categorical :
625
627
# we make a CategoricalIndex out of the cat grouper
626
628
# preserving the categories / ordered attributes
627
- cat = self .grouper
629
+ cat = self .grouping_vector
628
630
categories = cat .categories
629
631
630
632
if self .observed :
@@ -640,18 +642,18 @@ def _codes_and_uniques(self) -> tuple[np.ndarray, ArrayLike]:
640
642
)
641
643
return cat .codes , uniques
642
644
643
- elif isinstance (self .grouper , ops .BaseGrouper ):
645
+ elif isinstance (self .grouping_vector , ops .BaseGrouper ):
644
646
# we have a list of groupers
645
- codes = self .grouper .codes_info
646
- uniques = self .grouper .result_arraylike
647
+ codes = self .grouping_vector .codes_info
648
+ uniques = self .grouping_vector .result_arraylike
647
649
else :
648
650
# GH35667, replace dropna=False with na_sentinel=None
649
651
if not self .dropna :
650
652
na_sentinel = None
651
653
else :
652
654
na_sentinel = - 1
653
655
codes , uniques = algorithms .factorize (
654
- self .grouper , sort = self .sort , na_sentinel = na_sentinel
656
+ self .grouping_vector , sort = self .sort , na_sentinel = na_sentinel
655
657
)
656
658
return codes , uniques
657
659
0 commit comments