Как сортировать панды DataFrame по значениям одной колонки

  1. DataFrame Сортировочный порядок - Аргумент ascending
  2. DataFrame Порядок сортировки - Аргумент na_position

Мы познакомимся с методом pandas.DataFrame.sort_values для сортировки значений DataFrame, а также с опциями типа ascending, определяющей порядок сортировки, и na_position, определяющей позицию NaN в отсортированном результате.

Рассмотрим следующий DataFrame,

import pandas as pd
df = pd.DataFrame({
    'col1': ['g', 't', 'n', 'w', 'n', 'g'],
    'col2': [5, 2, 5, 1, 3, 6],
    'col3': [0, 7, 2, 8,1, 2],
})
print(df)

Если вы запустите этот код, то получите следующий результат, который еще не отсортирован.

    col1  col2  col3
0    g     5     0
1    t     2     7
2    n     5     2
3    w     1     8
4    n     3     1
5    g     6     2

Теперь мы можем отсортировать DataFrame с кодами ниже.

import pandas as pd
df = pd.DataFrame({
    'col1': ['g', 't', 'n', 'w', 'n', 'g'],
    'col2': [5, 2, 5, 1, 3, 6],
    'col3': [0, 7, 2, 8,1, 2],
})
print(df.sort_values(by=['col1']))

Мы отсортировали DataFrame по col. После запуска приведенного кода вы получите следующий вывод.

    col1  col2  col3
0 g 5 0
5 g 6 2
2 n 5 2
4 n 3 1
1 t 2 7
3 w 1 8

Для сортировки также можно использовать более одного столбца, изменим последнюю строку приведенного кода следующим образом,

print(df.sort_values(by=['col1','col2']))

После запуска кода мы получим следующий вывод.

    col1  col2  col3
0    g     5     0
5    g     6     2
4    n     3     1
2    n     5     2
1    t     2     7
3    w     1     8

Теперь DataFrame также отсортирован по col2.

DataFrame Сортировочный порядок - Аргумент ascending

По умолчанию сортировка находится в порядке возрастания, чтобы изменить DataFrame в порядке убывания, нужно установить флаг ascending=false.

print(df.sort_values(by=['col1','col2'], ascending=False))

После запуска кода мы получим следующий вывод.

    col1  col2  col3
3 w 1 8
1 t 2 7
2 n 5 2
4 n 3 1
5 g 6 2
0 g 5 0

DataFrame Порядок сортировки - Аргумент na_position

na_position указывает позицию NaN после сортировки, т.е. last ставит NaN в конец. Его значение по умолчанию - first, что ставит NaN в начало отсортированного результата.

Рассмотрим следующий DataFrame,

import numpy as np
import pandas as pd
s = pd.Series([np.nan, 2, 4, 10, 7])
print(s.sort_values(na_position='last'))

После запуска кода мы получим следующий вывод.

1     2.0
2     4.0
4     7.0
3    10.0
0     NaN

Сопутствующая статья - Pandas DataFrame

  • Как получить заголовки столбцов Pandas DataFrame в виде списка
  • Как удалить колонку Pandas DataFrame
  • Как преобразовать столбец DataFrame в дату в Pandas
  • Как преобразовать плавающий диск в целое число в Pandas DataFrame
  • Как получить совокупность Pandas по группам и Сумма
  • Как преобразовать словарь Python в Pandas DataFrame
  • Как добавить строку заголовка к Pandas DataFrame
  • Как преобразовать Pandas Dataframe в Numpy массив
  • Как преобразовать индекс Pandas Dataframe в столбец
  • Как подсчитать NaN-вступления в столбце в Pandas Dataframe
  • Как изменить порядок столбцов DataFrame
  • comments powered by Disqus