def counts(self): if self._counts is None: if self._was_factor: self._counts = lib.group_count(self.labels, self.ngroups) else: self._make_labels() return self._counts
def __init__(self, index, grouper=None, name=None, level=None, sort=True): self.name = name self.level = level self.grouper = _convert_grouper(index, grouper) self.index = index self.sort = sort # right place for this? if isinstance(grouper, Series) and name is None: self.name = grouper.name # pre-computed self._was_factor = False if level is not None: if not isinstance(level, int): assert(level in index.names) level = index.names.index(level) inds = index.labels[level] level_index = index.levels[level] if self.name is None: self.name = index.names[level] # XXX complete hack level_values = index.levels[level].take(inds) if grouper is not None: self.grouper = level_values.map(self.grouper) else: self._was_factor = True self._labels = inds self._group_index = level_index self._counts = lib.group_count(inds, len(level_index)) self.grouper = level_values else: # no level passed if not isinstance(self.grouper, np.ndarray): self.grouper = self.index.map(self.grouper)