Ordina Pandas DataFrame in base ai valori di una colonna

  1. Ordine di ordinamento Dataframe - Argomento “crescente”
  2. Ordine di ordinamento dataframe - Argomento na_position

Introdurremo il metodo pandas.DataFrame.sort_values per ordinare i valori di dataframe e le sue opzioni come ascending per specificare l’ordinamento e na_position che determina la posizione di NaN nel risultato ordinato.

Considera il seguente 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 esegui questo codice, otterrai l’output come segue che non è ancora ordinato.

    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

Ora potremmo ordinare il dataframe con i codici sottostanti.

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

Ordiniamo dataframe per col1. Dopo aver eseguito il codice sopra, otterrai il seguente output.

    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

Possiamo anche usare più di una colonna per l’ordinamento. Cambiamo l’ultima riga dei codici sopra come segue,

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

Produzione:

    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

Ora dataframe è ulteriormente ordinato anche da col2.

Ordine di ordinamento Dataframe - Argomento “crescente”

Per impostazione predefinita, l’ordinamento è in ordine crescente. Per ordinare dataframe in ordine decrescente, dobbiamo impostare il flag ascending=false.

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

Produzione:

    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

Ordine di ordinamento dataframe - Argomento na_position

na_position specifica la posizione di NaN dopo l’ordinamento, cioè last mette NaN alla fine. Il suo valore predefinito è first che mette NaN all’inizio del risultato ordinato.

Considera il seguente 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'))

Dopo aver eseguito il codice, otterremo il seguente output.

1     2.0
2     4.0
4     7.0
3    10.0
0     NaN

Articolo correlato - Pandas DataFrame

  • Applicare una funzione a una colonna in Pandas Dataframe
  • Ottieni un valore da una cella di un DataFrame Pandas