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

Method _set_grouper

pandas/core/groupby/grouper.py:321–398  ·  view source on GitHub ↗

given an object and the specifications, setup the internal grouper for this particular specification Parameters ---------- obj : Series or DataFrame sort : bool, default False whether the resulting grouper should be sorted gpr_ind

(
        self, obj: NDFrameT, sort: bool = False, *, gpr_index: Index | None = None
    )

Source from the content-addressed store, hash-verified

319 return grouper, obj
320
321 def _set_grouper(
322 self, obj: NDFrameT, sort: bool = False, *, gpr_index: Index | None = None
323 ) -> tuple[NDFrameT, Index, npt.NDArray[np.intp] | None]:
324 """
325 given an object and the specifications, setup the internal grouper
326 for this particular specification
327
328 Parameters
329 ----------
330 obj : Series or DataFrame
331 sort : bool, default False
332 whether the resulting grouper should be sorted
333 gpr_index : Index or None, default None
334
335 Returns
336 -------
337 NDFrame
338 Index
339 np.ndarray[np.intp] | None
340 """
341 assert obj is not None
342
343 if self.key is not None and self.level is not None:
344 raise ValueError("The Grouper cannot specify both a key and a level!")
345
346 # Keep self._grouper value before overriding
347 if self._grouper is None:
348 # TODO: What are we assuming about subsequent calls?
349 self._grouper = gpr_index
350 self._indexer = self._indexer_deprecated
351
352 # the key must be a valid info item
353 if self.key is not None:
354 key = self.key
355 # The 'on' is already defined
356 if getattr(gpr_index, "name", None) == key and isinstance(obj, Series):
357 # Sometimes self._grouper will have been resorted while
358 # obj has not. In this case there is a mismatch when we
359 # call self._grouper.take(obj.index) so we need to undo the sorting
360 # before we call _grouper.take.
361 assert self._grouper is not None
362 if self._indexer is not None:
363 reverse_indexer = self._indexer.argsort()
364 unsorted_ax = self._grouper.take(reverse_indexer)
365 ax = unsorted_ax.take(obj.index)
366 else:
367 ax = self._grouper.take(obj.index)
368 else:
369 if key not in obj._info_axis:
370 raise KeyError(f"The grouper name {key} is not found")
371 ax = Index(obj[key], name=key)
372
373 else:
374 ax = obj.index
375 if self.level is not None:
376 level = self.level
377
378 # if a level is given it must be a mi level or

Callers 1

_get_grouperMethod · 0.95

Calls 6

_get_level_numberMethod · 0.95
_get_level_valuesMethod · 0.95
takeMethod · 0.95
IndexClass · 0.85
argsortMethod · 0.45
takeMethod · 0.45

Tested by

no test coverage detected