Come scambiare due righe in pandas (con esempio)


È possibile utilizzare la seguente funzione personalizzata per scambiare la posizione di due righe in un DataFrame panda:

 def swap_rows (df, row1, row2):
    df. iloc [row1], df. iloc [row2] = df. iloc [row2]. copy (), df. iloc [row1]. copy ()
    return df

Questa funzione scambierà le posizioni delle righe nelle posizioni degli indici riga 1 e riga 2 nel DataFrame.

L’esempio seguente mostra come utilizzare questa funzione nella pratica.

Esempio: scambia due righe in Pandas

Supponiamo di avere i seguenti panda DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['Mavs', 'Nets', 'Kings', 'Cavs', 'Heat', 'Magic'],
                   ' points ': [12, 15, 22, 29, 24, 22],
                   ' assists ': [4, 5, 10, 8, 7, 10]})

#view DataFrame
print (df)

    team points assists
0 Mavs 12 4
1 Nets 15 5
2Kings 22 10
3 Cavs 29 8
4 Heat 24 7
5 Magic 22 10

Possiamo definire una funzione swap_rows() per scambiare le righe nelle posizioni dell’indice 0 e 4 nel DataFrame:

 #define function to swap rows
def swap_rows (df, row1, row2):
    df. iloc [row1], df. iloc [row2] = df. iloc [row2]. copy (), df. iloc [row1]. copy ()
    return df

#swap rows in index positions 0 and 4
df = swap_rows(df, 0 , 4 )

#view updated DataFrame
print (df)

    team points assists
0 Heat 24 7
1 Nets 15 5
2Kings 22 10
3 Cavs 29 8
4 Mavs 12 4
5 Magic 22 10

Si noti che le righe nelle posizioni dell’indice 0 e 4 sono state scambiate mentre ogni altra riga è rimasta nella stessa posizione.

Nota : nella funzione swap_rows() , abbiamo utilizzato la funzione .iloc per selezionare le righe dal DataFrame in base alla loro posizione di indice.

Risorse addizionali

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

Panda: come contare le occorrenze di valore specifico in una colonna
Panda: ottieni l’indice delle righe la cui colonna corrisponde al valore
Panda: come contare i valori mancanti in DataFrame

Aggiungi un commento

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