Como Classificar Pandas DataFrame pelos Valores de uma Coluna

  1. Ordem de classificação do Dataframe - Argumento ascending
  2. Ordem de ordenação - Argumento na_position

Introduziremos o método pandas.DataFrame.sort_values para ordenar os valores dataframe, e suas opções como ascending para especificar a ordem de ordenação e na_position que determina a posição de NaN no resultado ordenado.

Considere o seguinte 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)

Se você executar este código, obterá a saída como segue, que ainda não está classificada.

    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

Agora poderíamos ordenar o dataframe com os códigos abaixo.

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']))

Classificamos o dataframe por col1. Depois de executar o código acima, você obterá a seguinte saída.

    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

Também podemos utilizar mais de uma coluna para ordenação. Vamos mudar a última linha dos códigos acima como a seguir,

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

Resultado:

    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

Agora o dataframe também é classificado por col2.

Ordem de classificação do Dataframe - Argumento ascending

Por padrão, a ordenação está em ordem ascendente. Para ordenar dataframe em ordem decrescente, precisamos colocar a bandeira ascending=false.

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

Resultado:

    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

Ordem de ordenação - Argumento na_position

A posição na_position especifica a posição de NaN após a classificação, ou seja, last coloca NaN no final. Seu valor padrão é first que coloca NaN no início do resultado ordenado.

Considere o seguinte 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'))

Depois de executar o código, obteremos a seguinte saída.

1     2.0
2     4.0
4     7.0
3    10.0
0     NaN

Artigo relacionado - Pandas DataFrame

  • Converter a coluna Pandas DataFrame em lista
  • Seleccionar Várias Colunas em Pandas Dataframe