Skip to main content
`Ctrl`+`K`

# pandas.MultiIndex.sortlevel

MultiIndex.sortlevel(level=0, ascending=True, sort_remaining=True, na_position='first')

  Sort MultiIndex at the requested level.

  This method is useful when dealing with MultiIndex objects, allowing for sorting at a specific level of the index. The function preserves the relative ordering of data within the same level while sorting the overall MultiIndex. The method provides flexibility with the ascending parameter to define the sort order and with the sort_remaining parameter to control whether the remaining levels should also be sorted. Sorting a MultiIndex can be crucial when performing operations that require ordered indices, such as grouping or merging datasets. The na_position argument is important in handling missing values consistently across different levels.

  Parameters:
    level list-like, int or str, default 0

      If a string is given, must be a name of the level. If list-like must be names or ints of levels.

    ascending bool, default True

      False to sort in descending order. Can also be a list to specify a directed ordering.

    sort_remaining bool, default True

      If True, sorts by the remaining levels after sorting by the specified level.

    na_position{‘first’ or ‘last’}, default ‘first’

      Argument ‘first’ puts NaNs at the beginning, ‘last’ puts NaNs at the end.

      Added in version 2.1.0.

  Returns:
    sorted_index pd.MultiIndex

      Resulting index.

    indexer np.ndarray[np.intp]

      Indices of output values in original index.

  See also

  `MultiIndex`

    A multi-level, or hierarchical, index object for pandas objects.

  `Index.sort_values`

    Sort Index values.

  `DataFrame.sort_index`

    Sort DataFrame by the index.

  `Series.sort_index`

    Sort Series by the index.

  Examples

      >>> mi = pd.MultiIndex.from_arrays([[0, 0], [2, 1]])
      >>> mi
      MultiIndex([(0, 2),
                  (0, 1)],
                 )

      >>> mi.sortlevel()
      (MultiIndex([(0, 1),
                  (0, 2)],
                 ), array([1, 0]))

      >>> mi.sortlevel(sort_remaining=False)
      (MultiIndex([(0, 2),
                  (0, 1)],
                 ), array([0, 1]))

      >>> mi.sortlevel(1)
      (MultiIndex([(0, 1),
                  (0, 2)],
                 ), array([1, 0]))

      >>> mi.sortlevel(1, ascending=False)
      (MultiIndex([(0, 2),
                  (0, 1)],
                 ), array([0, 1]))