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

Method get_new_columns

pandas/core/reshape/reshape.py:374–407  ·  view source on GitHub ↗
(self, value_columns: Index | None)

Source from the content-addressed store, hash-verified

372 return new_values, new_mask
373
374 def get_new_columns(self, value_columns: Index | None):
375 if value_columns is None:
376 if not self.has_nan:
377 return self.removed_level._rename(name=self.removed_name)
378
379 lev = self.removed_level.insert(0, item=self.removed_level._na_value)
380 return lev.rename(self.removed_name)
381
382 stride = len(self.removed_level) + self.has_nan
383 width = len(value_columns)
384 propagator = np.repeat(np.arange(width), stride)
385
386 new_levels: FrozenList | list[Index]
387
388 if isinstance(value_columns, MultiIndex):
389 new_levels = value_columns.levels + (self.removed_level_full,) # pyright: ignore[reportOperatorIssue] # noqa: RUF005
390 new_names = value_columns.names + (self.removed_name,) # noqa: RUF005
391
392 new_codes = [lab.take(propagator) for lab in value_columns.codes]
393 else:
394 new_levels = [
395 value_columns,
396 self.removed_level_full,
397 ]
398 new_names = [value_columns.name, self.removed_name]
399 new_codes = [propagator]
400
401 repeater = self._repeater
402
403 # The entire level is then just a repetition of the single chunk:
404 new_codes.append(np.tile(repeater, width))
405 return MultiIndex(
406 levels=new_levels, codes=new_codes, names=new_names, verify_integrity=False
407 )
408
409 @cache_readonly
410 def _repeater(self) -> np.ndarray:

Callers 2

get_resultMethod · 0.95
unstackMethod · 0.80

Calls 7

MultiIndexClass · 0.85
_renameMethod · 0.45
insertMethod · 0.45
renameMethod · 0.45
repeatMethod · 0.45
takeMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected