Panda: come confrontare stringhe tra due colonne


È possibile utilizzare la seguente sintassi di base per confrontare le stringhe tra due colonne in un DataFrame panda:

 df[' col1 ']. str . strip (). str . lower () == df[' col2 ']. str . strip (). str . lower ()

La funzione str.strip() rimuove gli spazi da ogni stringa e la funzione str.lower() converte ogni stringa in minuscolo prima di eseguire il confronto.

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

Esempio: confronta stringhe tra due colonne in Panda

Supponiamo di avere il seguente DataFrame panda che contiene due colonne con i nomi delle squadre di basket:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team1 ': ['Mavs', 'Hawks', 'Nets', 'Hornets', 'Lakers'],
                   ' team2 ': ['Mavs', 'Jazz', 'Nets', 'Hornets', 'LAKERS']})

#view DataFrame
print (df)

     team1 team2
0 Mavs Mavs 
1 Hawks Jazz
2 Nets Nets
3 Hornets Hornets 
4 Lakers LAKERS

Tieni presente che alcuni nomi di squadre contengono spazi in posti casuali e alcuni nomi di squadre sono in maiuscolo.

Diciamo che vogliamo confrontare le stringhe in ogni riga per vedere se i nomi delle squadre sono uguali in ogni riga.

Se usiamo solo il simbolo == quando confrontiamo le stringhe, i panda restituiranno True solo se sono nello stesso caso e contengono spazi esattamente nelle stesse posizioni:

 #create new column that tests if strings in team columns are equal
df[' equal '] = df[' team1 '] == df[' team2 ']

#view updated DataFrame
print (df)

     team1 team2 equal
0 Mavs Mavs False
1 Hawks Jazz False
2 Nets Nets True
3 Hornets Hornets False
4 Lakers LAKERS False

Tieni presente che solo una riga restituisce True , perché è l’unica riga in cui le stringhe contengono le stesse posizioni di maiuscole e minuscole e di spazi bianchi.

Tuttavia, possiamo utilizzare la funzione str.strip() per rimuovere gli spazi da ogni stringa e la funzione str.lower() per convertire ogni stringa in minuscolo prima di eseguire il confronto:

 #remove whitespace and convert each string to lowercase, then compare strings
df[' equal '] = df[' team1 ']. str . strip (). str . lower () == df[' team2 ']. str . strip (). str . lower ()

#view updated DataFrame
print (df)

     team1 team2 equal
0 Mavs Mavs True
1 Hawks Jazz False
2 Nets Nets True
3 Hornets Hornets True
4 Lakers LAKERS True

Ora ogni riga restituisce True tranne la riga in cui i nomi delle squadre sono “Hawks” e “Jazz”, perché anche dopo aver rimosso gli spazi e convertito le stringhe in minuscolo, queste stringhe non sono uguali.

Risorse addizionali

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

Panda: come rimuovere caratteri specifici dalle stringhe
Panda: controlla se la stringa contiene più sottostringhe
Panda: come sostituire le stringhe vuote con NaN

Aggiungi un commento

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