pandas.DataFrame.sort_values#

DataFrame.sort_values(by, *, ось=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, ключ=None)[источник]#

Сортировка по значениям вдоль любой оси.

Параметры:
bystr или список str

Имя или список имён для сортировки.

  • if ось равно 0 или ‘index’ затем by может содержать уровни индекса и/или метки столбцов.

  • if ось равно 1 или ‘columns’ затем by может содержать уровни столбцов и/или метки индекса.

ось"{0 или 'index', 1 или 'columns'}", по умолчанию 0

Ось для сортировки.

ascendingbool или список bool, по умолчанию True

Сортировка по возрастанию или убыванию. Укажите список для нескольких порядков сортировки. Если это список булевых значений, он должен соответствовать длине by.

inplacebool, по умолчанию False

Если True, выполнить операцию на месте.

kind{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, по умолчанию ‘quicksort’

Выбор алгоритма сортировки. См. также numpy.sort() для получения дополнительной информации. mergesort и стабильный являются единственными стабильными алгоритмами. Для DataFrames эта опция применяется только при сортировке по одному столбцу или метке.

na_position{'first', 'last'}, по умолчанию 'last'

Помещает NaN в начало, если первый; last помещает NaN в конец.

ignore_indexbool, по умолчанию False

Если True, результирующая ось будет помечена как 0, 1, …, n - 1.

ключвызываемый объект, необязательный

Применить ключевую функцию к значениям перед сортировкой. Это похоже на ключ аргумент во встроенной функции sorted() функция, с заметным отличием, что эта ключ функция должна быть векторизованный. Он должен ожидать Series и возвращает Series той же формы, что и входные данные. Он будет применен к каждому столбцу в by независимо.

Возвращает:
DataFrame или None

DataFrame с отсортированными значениями или None, если inplace=True.

Смотрите также

DataFrame.sort_index

Сортировать DataFrame по индексу.

Series.sort_values

Аналогичный метод для Series.

Примеры

>>> df = pd.DataFrame({
...     'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],
...     'col2': [2, 1, 9, 8, 7, 4],
...     'col3': [0, 1, 9, 4, 2, 3],
...     'col4': ['a', 'B', 'c', 'D', 'e', 'F']
... })
>>> df
  col1  col2  col3 col4
0    A     2     0    a
1    A     1     1    B
2    B     9     9    c
3  NaN     8     4    D
4    D     7     2    e
5    C     4     3    F

Сортировка по col1

>>> df.sort_values(by=['col1'])
  col1  col2  col3 col4
0    A     2     0    a
1    A     1     1    B
2    B     9     9    c
5    C     4     3    F
4    D     7     2    e
3  NaN     8     4    D

Сортировка по нескольким столбцам

>>> df.sort_values(by=['col1', 'col2'])
  col1  col2  col3 col4
1    A     1     1    B
0    A     2     0    a
2    B     9     9    c
5    C     4     3    F
4    D     7     2    e
3  NaN     8     4    D

Сортировка по убыванию

>>> df.sort_values(by='col1', ascending=False)
  col1  col2  col3 col4
4    D     7     2    e
5    C     4     3    F
2    B     9     9    c
0    A     2     0    a
1    A     1     1    B
3  NaN     8     4    D

Размещение NA первыми

>>> df.sort_values(by='col1', ascending=False, na_position='first')
  col1  col2  col3 col4
3  NaN     8     4    D
4    D     7     2    e
5    C     4     3    F
2    B     9     9    c
0    A     2     0    a
1    A     1     1    B

Сортировка с ключевой функцией

>>> df.sort_values(by='col4', key=lambda col: col.str.lower())
   col1  col2  col3 col4
0    A     2     0    a
1    A     1     1    B
2    B     9     9    c
3  NaN     8     4    D
4    D     7     2    e
5    C     4     3    F

Естественная сортировка с аргументом key, используя natsort пакет.

>>> df = pd.DataFrame({
...    "time": ['0hr', '128hr', '72hr', '48hr', '96hr'],
...    "value": [10, 20, 30, 40, 50]
... })
>>> df
    time  value
0    0hr     10
1  128hr     20
2   72hr     30
3   48hr     40
4   96hr     50
>>> from natsort import index_natsorted
>>> df.sort_values(
...     by="time",
...     key=lambda x: np.argsort(index_natsorted(df["time"]))
... )
    time  value
0    0hr     10
3   48hr     40
2   72hr     30
4   96hr     50
1  128hr     20