Skip to main content
`Ctrl`+`K`

# pandas.Series.sort_index

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

  Sort Series by index labels.

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

  Parameters:
    axis{0 or ‘index’}

      Unused. Parameter needed for compatibility with DataFrame.

    level int, optional

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

    ascending bool 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.

    inplace bool, default False

      If True, perform operation in-place.

    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’

      If ‘first’ puts NaNs at the beginning, ‘last’ puts NaNs at the end. Not implemented for MultiIndex.

    sort_remaining bool, 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_index bool, default False

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

    key callable, 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.

  Returns:
    Series or None

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

  See also

  `DataFrame.sort_index`

    Sort DataFrame by the index.

  `DataFrame.sort_values`

    Sort DataFrame by the value.

  `Series.sort_values`

    Sort Series by the value.

  Examples

      >>> s = pd.Series(["a", "b", "c", "d"], index=[3, 2, 1, 4])
      >>> s.sort_index()
      1    c
      2    b
      3    a
      4    d
      dtype: str

  Sort Descending

      >>> s.sort_index(ascending=False)
      4    d
      3    a
      2    b
      1    c
      dtype: str

  By default NaNs are put at the end, but use na_position to place them at the beginning

      >>> s = pd.Series(["a", "b", "c", "d"], index=[3, 2, 1, np.nan])
      >>> s.sort_index(na_position="first")
      NaN     d
       1.0    c
       2.0    b
       3.0    a
      dtype: str

  Specify index level to sort

      >>> arrays = [
      ...     np.array(["qux", "qux", "foo", "foo", "baz", "baz", "bar", "bar"]),
      ...     np.array(["two", "one", "two", "one", "two", "one", "two", "one"]),
      ... ]
      >>> s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8], index=arrays)
      >>> s.sort_index(level=1)
      bar  one    8
      baz  one    6
      foo  one    4
      qux  one    2
      bar  two    7
      baz  two    5
      foo  two    3
      qux  two    1
      dtype: int64

  Does not sort by remaining levels when sorting by levels

      >>> s.sort_index(level=1, sort_remaining=False)
      qux  one    2
      foo  one    4
      baz  one    6
      bar  one    8
      qux  two    1
      foo  two    3
      baz  two    5
      bar  two    7
      dtype: int64

  Apply a key function before sorting

      >>> s = pd.Series([1, 2, 3, 4], index=["A", "b", "C", "d"])
      >>> s.sort_index(key=lambda x: x.str.lower())
      A    1
      b    2
      C    3
      d    4
      dtype: int64