MCPcopy
hub / github.com/pandas-dev/pandas / __init__

Method __init__

pandas/core/groupby/grouper.py:450–553  ·  view source on GitHub ↗
(
        self,
        index: Index,
        grouper=None,
        obj: NDFrame | None = None,
        level=None,
        sort: bool = True,
        observed: bool = False,
        in_axis: bool = False,
        dropna: bool = True,
        uniques: ArrayLike | None = None,
    )

Source from the content-addressed store, hash-verified

448 _index: Index
449
450 def __init__(
451 self,
452 index: Index,
453 grouper=None,
454 obj: NDFrame | None = None,
455 level=None,
456 sort: bool = True,
457 observed: bool = False,
458 in_axis: bool = False,
459 dropna: bool = True,
460 uniques: ArrayLike | None = None,
461 ) -> None:
462 if isinstance(grouper, Series):
463 grouper = grouper.copy(deep=False)
464 self.level = level
465 self._orig_grouper = grouper
466 grouping_vector = _convert_grouper(index, grouper)
467 self._orig_cats = None
468 self._index = index
469 self._sort = sort
470 self.obj = obj
471 self._observed = observed
472 self.in_axis = in_axis
473 self._dropna = dropna
474 self._uniques = uniques
475
476 # we have a single grouper which may be a myriad of things,
477 # some of which are dependent on the passing in level
478
479 ilevel = self._ilevel
480 if ilevel is not None:
481 # In extant tests, the new self.grouping_vector matches
482 # `index.get_level_values(ilevel)` whenever
483 # mapper is None and isinstance(index, MultiIndex)
484 if isinstance(index, MultiIndex):
485 index_level = index.get_level_values(ilevel)
486 else:
487 index_level = index
488
489 if grouping_vector is None:
490 grouping_vector = index_level
491 else:
492 mapper = grouping_vector
493 grouping_vector = index_level.map(mapper)
494
495 # a passed Grouper like, directly get the grouper in the same way
496 # as single grouper groupby, use the group_info to get codes
497 elif isinstance(grouping_vector, Grouper):
498 # get the new grouper; we already have disambiguated
499 # what key/level refer to exactly, don't need to
500 # check again as we have by this point converted these
501 # to an actual value (rather than a pd.Grouper)
502 assert self.obj is not None # for mypy
503 newgrouper, newobj = grouping_vector._get_grouper(self.obj, validate=False)
504 self.obj = newobj
505
506 if isinstance(newgrouper, ops.BinGrouper):
507 # TODO: can we unwrap this and get a tighter typing

Callers

nothing calls this directly

Calls 10

pprint_thingFunction · 0.90
SeriesClass · 0.90
recode_for_groupbyFunction · 0.90
_convert_grouperFunction · 0.85
IndexClass · 0.85
get_level_valuesMethod · 0.80
copyMethod · 0.45
mapMethod · 0.45
_get_grouperMethod · 0.45
to_numpyMethod · 0.45

Tested by

no test coverage detected