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

Method __getitem__

pandas/core/indexes/multi.py:2425–2458  ·  view source on GitHub ↗
(self, key)

Source from the content-addressed store, hash-verified

2423 # --------------------------------------------------------------------
2424
2425 def __getitem__(self, key):
2426 key = lib.item_from_zerodim(key)
2427 if is_scalar(key):
2428 key = com.cast_scalar_indexer(key)
2429
2430 retval = []
2431 for lev, level_codes in zip(self.levels, self.codes, strict=True):
2432 if level_codes[key] == -1:
2433 retval.append(np.nan)
2434 else:
2435 retval.append(lev[level_codes[key]])
2436
2437 return tuple(retval)
2438 else:
2439 # in general cannot be sure whether the result will be sorted
2440 sortorder = None
2441 if com.is_bool_indexer(key):
2442 key = np.asarray(key, dtype=bool)
2443 sortorder = self.sortorder
2444 elif isinstance(key, slice):
2445 if key.step is None or key.step > 0:
2446 sortorder = self.sortorder
2447 elif isinstance(key, Index):
2448 key = np.asarray(key)
2449
2450 new_codes = [level_codes[key] for level_codes in self.codes]
2451
2452 return MultiIndex(
2453 levels=self.levels,
2454 codes=new_codes,
2455 names=self.names,
2456 sortorder=sortorder,
2457 verify_integrity=False,
2458 )
2459
2460 def _getitem_slice(self: MultiIndex, slobj: slice) -> MultiIndex:
2461 """

Callers

nothing calls this directly

Calls 2

MultiIndexClass · 0.85
appendMethod · 0.45

Tested by

no test coverage detected