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)
| 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: |
no test coverage detected