Skip to content

Commit 862d611

Browse files
committed
Various changes
1 parent d0523e9 commit 862d611

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

pandas/core/groupby/generic.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,8 @@ def value_counts(
654654
rep = partial(np.repeat, repeats=np.add.reduceat(inc, idx))
655655

656656
# multi-index components
657-
codes = list(map(rep, self.grouper.recons_codes)) + [llab(lab, inc)]
657+
codes = self.grouper.recons_codes
658+
codes = [rep(level_codes) for level_codes in codes] + [llab(lab, inc)]
658659
levels = [ping.group_index for ping in self.grouper.groupings] + [lev]
659660
names = self.grouper.names + [self._selection_name]
660661

@@ -693,8 +694,8 @@ def value_counts(
693694
# for compat. with libgroupby.value_counts need to ensure every
694695
# bin is present at every index level, null filled with zeros
695696
diff = np.zeros(len(out), dtype="bool")
696-
for codes_ in codes[:-1]:
697-
diff |= np.r_[True, codes_[1:] != codes_[:-1]]
697+
for level_codes in codes[:-1]:
698+
diff |= np.r_[True, level_codes[1:] != level_codes[:-1]]
698699

699700
ncat, nbin = diff.sum(), len(levels[-1])
700701

@@ -710,7 +711,10 @@ def value_counts(
710711
out, left[-1] = out[sorter], left[-1][sorter]
711712

712713
# build the multi-index w/ full levels
713-
codes = list(map(lambda codes: np.repeat(codes[diff], nbin), codes[:-1]))
714+
def build_codes(lev_codes: np.ndarray) -> np.ndarray:
715+
return np.repeat(lev_codes[diff], nbin)
716+
717+
codes = [build_codes(lev_codes) for lev_codes in codes[:-1]]
714718
codes.append(left[-1])
715719

716720
mi = MultiIndex(levels=levels, codes=codes, names=names, verify_integrity=False)

pandas/core/groupby/grouper.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class Grouper:
5959
<http://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#offset-aliases>`_.
6060
axis : number/name of the axis, defaults to 0
6161
sort : bool, default to False
62-
whether to sort the resulting codes
62+
whether to sort the resulting labels
6363
closed : {'left' or 'right'}
6464
Closed end of interval. Only when `freq` parameter is passed.
6565
label : {'left' or 'right'}
@@ -378,11 +378,11 @@ def __repr__(self):
378378
def __iter__(self):
379379
return iter(self.indices)
380380

381-
_codes = None
382-
_group_index = None
381+
_codes = None # type: np.ndarray
382+
_group_index = None # type: Index
383383

384384
@property
385-
def ngroups(self):
385+
def ngroups(self) -> int:
386386
return len(self.group_index)
387387

388388
@cache_readonly
@@ -395,24 +395,24 @@ def indices(self):
395395
return values._reverse_indexer()
396396

397397
@property
398-
def codes(self):
398+
def codes(self) -> np.ndarray:
399399
if self._codes is None:
400400
self._make_codes()
401401
return self._codes
402402

403403
@cache_readonly
404-
def result_index(self):
404+
def result_index(self) -> Index:
405405
if self.all_grouper is not None:
406406
return recode_from_groupby(self.all_grouper, self.sort, self.group_index)
407407
return self.group_index
408408

409409
@property
410-
def group_index(self):
410+
def group_index(self) -> Index:
411411
if self._group_index is None:
412412
self._make_codes()
413413
return self._group_index
414414

415-
def _make_codes(self):
415+
def _make_codes(self) -> None:
416416
if self._codes is None or self._group_index is None:
417417
# we have a list of groupers
418418
if isinstance(self.grouper, BaseGrouper):
@@ -425,7 +425,7 @@ def _make_codes(self):
425425
self._group_index = uniques
426426

427427
@cache_readonly
428-
def groups(self):
428+
def groups(self) -> dict:
429429
return self.index.groupby(Categorical.from_codes(self.codes, self.group_index))
430430

431431

0 commit comments

Comments
 (0)