Spec-Zone.ru › pandas 1

pandas.DataFrame.sort_values

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)[source]

Сортировка значений по оси.

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

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

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

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

axis:{0 или ‘index’, 1 или ‘columns’}, по умолчанию 0

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

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

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

inplace:bool, по умолчанию False

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

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

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

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

Размещает значения NaN в начале, если first; last размещает значения NaN в конце.

ignore_index:bool, по умолчанию False

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

Добавлена в версии 1.0.0.

key:callable, необязательно

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

Добавлена в версии 1.1.0.

Возвращает
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

Размещение значений NaN в начале

>>> 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 <https://github.com/SethMMorton/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

© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/reference/api/pandas.DataFrame.sort_values.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API