DataFrame.sort_values() / Series.sort_values()
Метод sort_values() сортирует данные по значениям одного или нескольких столбцов. Поддерживает разные направления для каждого ключа и стабильную сортировку.
Сигнатура
DataFrame.sort_values(by, *, axis=0, ascending=True, inplace=False,
kind="quicksort", na_position="last",
ignore_index=False, key=None)
Параметры
by— имя столбца или список столбцов.ascending— направление;boolили списокbool.na_position— куда ставитьNaN:"first"или"last".ignore_index— сбросить индекс после сортировки.key— функция, применяемая к ключу перед сортировкой.
Возвращаемое значение
Новый DataFrame / Series (или None при inplace=True).
Примеры
Пример 1. По одному столбцу
import pandas as pd
df = pd.DataFrame({
"robot": ["P1", "P2", "P3"],
"score": [80, 95, 70],
})
print(df.sort_values("score"))
robot score
2 P3 70
0 P1 80
1 P2 95
Пример 2. По убыванию
import pandas as pd
s = pd.Series([3, 1, 4, 1, 5])
print(s.sort_values(ascending=False))
4 5
2 4
0 3
1 1
3 1
dtype: int64
Пример 3. По нескольким столбцам с разными направлениями
import pandas as pd
df = pd.DataFrame({
"zone": ["A", "B", "A", "B"],
"score": [80, 90, 95, 85],
})
print(df.sort_values(by=["zone", "score"], ascending=[True, False]))
zone score
2 A 95
0 A 80
1 B 90
3 B 85
Пример 4. NaN в начало
import pandas as pd
import numpy as np
s = pd.Series([3, np.nan, 1, 2])
print(s.sort_values(na_position="first"))
1 NaN
2 1.0
3 2.0
0 3.0
dtype: float64
Пример 5. Ключ для сортировки без учёта регистра
import pandas as pd
s = pd.Series(["Bb", "aa", "CC"])
print(s.sort_values(key=lambda x: x.str.lower()))
1 aa
0 Bb
2 CC
dtype: object
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.