7
7
"""
8
8
9
9
import collections
10
- from typing import List , Optional , Sequence , Type
10
+ from typing import List , Optional , Sequence , Tuple , Type
11
11
12
12
import numpy as np
13
13
@@ -216,11 +216,11 @@ def indices(self):
216
216
return get_indexer_dict (codes_list , keys )
217
217
218
218
@property
219
- def codes (self ):
219
+ def codes (self ) -> List [ np . ndarray ] :
220
220
return [ping .codes for ping in self .groupings ]
221
221
222
222
@property
223
- def levels (self ):
223
+ def levels (self ) -> List [ Index ] :
224
224
return [ping .group_index for ping in self .groupings ]
225
225
226
226
@property
@@ -264,16 +264,16 @@ def group_info(self):
264
264
return comp_ids , obs_group_ids , ngroups
265
265
266
266
@cache_readonly
267
- def codes_info (self ):
267
+ def codes_info (self ) -> np . ndarray :
268
268
# return the codes of items in original grouped axis
269
269
codes , _ , _ = self .group_info
270
270
if self .indexer is not None :
271
271
sorter = np .lexsort ((codes , self .indexer ))
272
272
codes = codes [sorter ]
273
273
return codes
274
274
275
- def _get_compressed_codes (self ):
276
- all_codes = [ ping . codes for ping in self .groupings ]
275
+ def _get_compressed_codes (self ) -> Tuple [ np . ndarray , np . ndarray ] :
276
+ all_codes = self .codes
277
277
if len (all_codes ) > 1 :
278
278
group_index = get_group_index (all_codes , self .shape , sort = True , xnull = True )
279
279
return compress_group_index (group_index , sort = self .sort )
@@ -286,17 +286,17 @@ def ngroups(self) -> int:
286
286
return len (self .result_index )
287
287
288
288
@property
289
- def recons_codes (self ):
289
+ def reconstructed_codes (self ) -> List [np .ndarray ]:
290
+ codes = self .codes
290
291
comp_ids , obs_ids , _ = self .group_info
291
- codes = (ping .codes for ping in self .groupings )
292
292
return decons_obs_group_ids (comp_ids , obs_ids , self .shape , codes , xnull = True )
293
293
294
294
@cache_readonly
295
295
def result_index (self ):
296
296
if not self .compressed and len (self .groupings ) == 1 :
297
297
return self .groupings [0 ].result_index .rename (self .names [0 ])
298
298
299
- codes = self .recons_codes
299
+ codes = self .reconstructed_codes
300
300
levels = [ping .result_index for ping in self .groupings ]
301
301
result = MultiIndex (
302
302
levels = levels , codes = codes , verify_integrity = False , names = self .names
@@ -308,7 +308,7 @@ def get_group_levels(self):
308
308
return [self .groupings [0 ].result_index ]
309
309
310
310
name_list = []
311
- for ping , codes in zip (self .groupings , self .recons_codes ):
311
+ for ping , codes in zip (self .groupings , self .reconstructed_codes ):
312
312
codes = ensure_platform_int (codes )
313
313
levels = ping .result_index .take (codes )
314
314
@@ -768,7 +768,7 @@ def group_info(self):
768
768
)
769
769
770
770
@cache_readonly
771
- def recons_codes (self ):
771
+ def reconstructed_codes (self ) -> List [ np . ndarray ] :
772
772
# get unique result indices, and prepend 0 as groupby starts from the first
773
773
return [np .r_ [0 , np .flatnonzero (self .bins [1 :] != self .bins [:- 1 ]) + 1 ]]
774
774
0 commit comments