Skip to main content
`Ctrl`+`K`

# pandas.DataFrame.sort_index

DataFrame.sort_index(*, axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index=False, key=None)

  Sort object by labels (along an axis).

  Returns a new DataFrame sorted by label if inplace argument is `False`, otherwise updates the original DataFrame and returns None.

  Parameters:
    axis{0 or ‘index’, 1 or ‘columns’}, default 0

      The axis along which to sort. The value 0 identifies the rows, and 1 identifies the columns.

    levelint or level name or list of ints or list of level names

      If not None, sort on values in specified index level(s).

    ascendingbool or list-like of bools, default True

      Sort ascending vs. descending. When the index is a MultiIndex the sort direction can be controlled for each level individually.

    inplacebool, default False

      Whether to modify the DataFrame rather than creating a new one.

    kind{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, default ‘quicksort’

      Choice of sorting algorithm. See also `numpy.sort()` for more information. mergesort and stable are the only stable algorithms. For DataFrames, this option is only applied when sorting on a single column or label.

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

      Puts NaNs at the beginning if first; last puts NaNs at the end. Not implemented for MultiIndex.

    sort_remainingbool, default True

      If True and sorting by level and index is multilevel, sort by other levels too (in order) after sorting by specified level.

    ignore_indexbool, default False

      If True, the resulting axis will be labeled 0, 1, …, n - 1.

    keycallable, optional

      If not None, apply the key function to the index values before sorting. This is similar to the key argument in the builtin `sorted()` function, with the notable difference that this key function should be vectorized. It should expect an `Index` and return an `Index` of the same shape. For MultiIndex inputs, the key is applied per level.

  Returns:
    DataFrame or None

      The original DataFrame sorted by the labels or None if `inplace=True`.

  See also

  `Series.sort_index`

    Sort Series by the index.

  `DataFrame.sort_values`

    Sort DataFrame by the value.

  `Series.sort_values`

    Sort Series by the value.

  Examples

      >>> df = pd.DataFrame([1, 2, 3, 4, 5], index=[100, 29, 234, 1, 150],
      ...                   columns=['A'])
      >>> df.sort_index()
           A
      1    4
      29   2
      100  1
      150  5
      234  3

  By default, it sorts in ascending order, to sort in descending order, use `ascending=False`

      >>> df.sort_index(ascending=False)
           A
      234  3
      150  5
      100  1
      29   2
      1    4

  A key function can be specified which is applied to the index before sorting. For a `MultiIndex` this is applied to each level separately.

      >>> df = pd.DataFrame({"a": [1, 2, 3, 4]}, index=['A', 'b', 'C', 'd'])
      >>> df.sort_index(key=lambda x: x.str.lower())
         a
      A  1
      b  2
      C  3
      d  4