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.
- key:callable, необязательно
-
Применяет функцию key к значениям перед сортировкой. Это аналогично параметру key в встроенной функции
sorted(), с заметным отличием, что эта функция key должна быть векторизованной. Она должна ожидать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
Размещение 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
Сортировка с помощью функции key
>>> 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/2.2.2/reference/api/pandas.DataFrame.sort_values.html