Panda: come sostituire i valori in una colonna in base alla condizione


È possibile utilizzare la seguente sintassi di base per sostituire i valori in una colonna di un DataFrame panda in base a una condizione:

 #replace values in 'column1' that are greater than 10 with 20
df. loc [df[' column1 '] > 10, ' column1 '] = 20

Gli esempi seguenti mostrano come utilizzare questa sintassi nella pratica.

Esempio 1: sostituisci i valori in una colonna in base a una condizione

Supponiamo di avere i seguenti panda DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [5, 7, 7, 9, 12, 13, 9, 14],
                   ' assists ': [3, 8, 2, 6, 6, 5, 9, 5]})

#view DataFrame
df

	team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5       

Possiamo utilizzare il seguente codice per sostituire ogni valore nella colonna “punti” maggiore di 10 con un valore pari a 20:

 #replace any values in 'points' column greater than 10 with 20
df. loc [df[' points '] > 10, ' points '] = 20

#view updated DataFrame
df

	team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 20 6
5 B G 20 5
6 B F 9 9
7 B F 20 5

Da notare che ciascuno dei tre valori nella colonna “punti” maggiore di 10 è stato sostituito dal valore 20.

Esempio 2: sostituisci i valori in una colonna in base a più condizioni

Supponiamo di avere i seguenti panda DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [5, 7, 7, 9, 12, 13, 9, 14],
                   ' assists ': [3, 8, 2, 6, 6, 5, 9, 5]})

#view DataFrame
df

	team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5       

Possiamo utilizzare il seguente codice per sostituire ogni valore nella colonna “posizione” dove i punti sono inferiori a 10 o gli assist sono inferiori a 5 con la stringa “Bad”:

 #replace string in 'position' column with 'bad' if points < 10 or assists < 5
df. loc [(df[' points '] < 10) | (df[' assists '] < 5), ' position '] = ' Bad '

#view updated DataFrame
df

        team position points assists
0 A Bad 5 3
1 A Bad 7 8
2 A Bad 7 2
3 A Bad 9 6
4 B G 20 6
5 B G 20 5
6 B Bad 9 9
7 B F 20 5

Allo stesso modo, possiamo usare il seguente codice per sostituire ogni valore nella colonna “posizione” dove i punti sono inferiori a 10 e i passaggi sono inferiori a 5 con la stringa “Bad”:

 #replace string in 'position' column with 'bad' if points < 10 and assists < 5
df. loc [(df[' points '] < 10) & (df[' assists '] < 5), ' position '] = ' Bad '

#view updated DataFrame
df

        team position points assists
0 A Bad 5 3
1 A G 7 8
2 A Bad 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5

Tieni presente che il valore “posizione” delle due righe in cui i punti erano inferiori a 10 e gli assist inferiori a 5 era sostituito con la stringa “Bad”.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:

Come selezionare le righe in base a più condizioni in Pandas
Come creare una nuova colonna basata su una condizione in Pandas
Come filtrare un Pandas DataFrame su più condizioni

Aggiungi un commento

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