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

Method reorder_levels

pandas/core/indexes/multi.py:2970–3018  ·  view source on GitHub ↗

Rearrange levels using input order. May not drop or duplicate levels. `reorder_levels` is useful when you need to change the order of levels in a MultiIndex, such as when reordering levels for hierarchical indexing. It maintains the integrity of the MultiIndex, ensu

(self, order)

Source from the content-addressed store, hash-verified

2968 )
2969
2970 def reorder_levels(self, order) -> MultiIndex:
2971 """
2972 Rearrange levels using input order. May not drop or duplicate levels.
2973
2974 `reorder_levels` is useful when you need to change the order of levels in
2975 a MultiIndex, such as when reordering levels for hierarchical indexing. It
2976 maintains the integrity of the MultiIndex, ensuring that all existing levels
2977 are present and no levels are duplicated. This method is helpful for aligning
2978 the index structure with other data structures or for optimizing the order
2979 for specific data operations.
2980
2981 Parameters
2982 ----------
2983 order : list of int or list of str
2984 List representing new level order. Reference level by number
2985 (position) or by key (label).
2986
2987 Returns
2988 -------
2989 MultiIndex
2990 A new MultiIndex with levels rearranged according to the specified order.
2991
2992 See Also
2993 --------
2994 MultiIndex.swaplevel : Swap two levels of the MultiIndex.
2995 MultiIndex.set_names : Set names for the MultiIndex levels.
2996 DataFrame.reorder_levels : Reorder levels in a DataFrame with a MultiIndex.
2997
2998 Examples
2999 --------
3000 >>> mi = pd.MultiIndex.from_arrays([[1, 2], [3, 4]], names=["x", "y"])
3001 >>> mi
3002 MultiIndex([(1, 3),
3003 (2, 4)],
3004 names=['x', 'y'])
3005
3006 >>> mi.reorder_levels(order=[1, 0])
3007 MultiIndex([(3, 1),
3008 (4, 2)],
3009 names=['y', 'x'])
3010
3011 >>> mi.reorder_levels(order=["y", "x"])
3012 MultiIndex([(3, 1),
3013 (4, 2)],
3014 names=['y', 'x'])
3015 """
3016 order = [self._get_level_number(i) for i in order]
3017 result = self._reorder_ilevels(order)
3018 return result
3019
3020 def _reorder_ilevels(self, order) -> MultiIndex:
3021 if len(order) != self.nlevels:

Callers 3

_join_multiMethod · 0.95
result_index_and_idsMethod · 0.45

Calls 2

_get_level_numberMethod · 0.95
_reorder_ilevelsMethod · 0.95

Tested by

no test coverage detected