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