Panda: come ordinare dataframe in base alla colonna di stringhe


È possibile utilizzare i seguenti metodi per ordinare le righe di un DataFrame panda in base ai valori di una particolare colonna di stringhe:

Metodo 1: ordinamento per colonna di stringhe (quando la colonna contiene solo caratteri)

 df = df. sort_values (' my_string_column ')

Metodo 2: ordinamento per colonna di stringhe (quando la colonna contiene caratteri e numeri)

 #create 'sort' column that contains digits from 'my_string_column'
df[' sort '] = df[' my_string_column ']. str . extract (' (\d+) ', expand= False ). astype (int)

#sort rows based on digits in 'sort' column
df = df. sort_values (' sort ')

Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica.

Esempio 1: ordinamento per colonna di stringhe (quando la colonna contiene solo caratteri)

Supponiamo di avere il seguente DataFrame panda che contiene informazioni sulle vendite di vari prodotti in un negozio di alimentari:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' product ': ['Apples', 'Oranges', 'Bananas', 'Lettuce', 'Beans'],
                   ' sales ': [18, 22, 19, 14, 29]})

#view DataFrame
print (df)

   product sales
0 Apples 18
1 Oranges 22
2 Bananas 19
3 Lettuce 14
4 Beans 29

Possiamo utilizzare la seguente sintassi per ordinare le righe del DataFrame in base alle stringhe nella colonna product :

 #sort rows from A to Z based on string in 'product' column
df = df. sort_values (' product ')

#view updated DataFrame
print (df)

   product sales
0 Apples 18
2 Bananas 19
4 Beans 29
3 Lettuce 14
1 Oranges 22

Tieni presente che le righe ora sono ordinate dalla A alla Z in base alle stringhe nella colonna Prodotto .

Se invece vuoi ordinare dalla Z alla A, aggiungi semplicemente l’argomento ascending=False :

 #sort rows from Z to A based on string in 'product' column
df = df. sort_values (' product ', ascending= False )

#view updated DataFrame
print (df)

   product sales
1 Oranges 22
3 Lettuce 14
4 Beans 29
2 Bananas 19
0 Apples 18

Tieni presente che le righe ora sono ordinate dalla Z alla A in base alle stringhe nella colonna Prodotto .

Esempio 2: ordinamento per colonna stringa (quando la colonna contiene caratteri e numeri)

Supponiamo di avere il seguente DataFrame panda che contiene informazioni sulle vendite di vari prodotti in un negozio di alimentari:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' product ': ['A3', 'A5', 'A22', 'A50', 'A2', 'A7', 'A9', 'A13'],
                   ' sales ': [18, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  product sales
0 A3 18
1 A5 22
2 A22 19
3 A50 14
4 A2 14
5 A7 11
6 A9 20
7 A13 28

Tieni presente che le stringhe nella colonna prodotto contengono sia caratteri che numeri.

Se proviamo a ordinare le righe del DataFrame utilizzando i valori nella colonna product , le stringhe non verranno ordinate nell’ordine corretto in base ai numeri:

 import pandas as pd

#sort rows based on strings in 'product' column
df = df. sort_values (' product ')

#view updated DataFrame
print (df)

  product sales
7 A13 28
4 A2 14
2 A22 19
0 A3 18
1 A5 22
3 A50 14
5 A7 11
6 A9 20

Dobbiamo invece creare una nuova colonna temporanea chiamata sort che contenga solo i numeri della colonna product, quindi ordinarli in base ai valori nella colonna sort , quindi eliminare completamente la colonna:

 import pandas as pd

#create new 'sort' column that contains digits from 'product' column
df[' sort '] = df[' product ']. str . extract (' (\d+) ', expand= False ). astype (int)

#sort rows based on digits in 'sort' column
df = df. sort_values (' sort ')

#drop 'sort' column
df = df. drop (' sort ', axis= 1 )

#view updated DataFrame
print (df)

  product sales
4 A2 14
0 A3 18
1 A5 22
5 A7 11
6 A9 20
7 A13 28
2 A22 19
3 A50 14

Nota che le righe ora sono ordinate per stringhe nella colonna del prodotto e i numeri sono ordinati nell’ordine corretto.

Nota : puoi trovare la documentazione completa della funzione sort_values() di panda qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni nei panda:

Panda: come ordinare per data
Panda: come ordinare le colonne per nome
Panda: come ordinare sia per indice che per colonna

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *