Panda's: hoe tekenreeksen tussen twee kolommen te vergelijken
U kunt de volgende basissyntaxis gebruiken om tekenreeksen tussen twee kolommen in een Panda DataFrame te vergelijken:
df[' col1 ']. str . strip (). str . lower () == df[' col2 ']. str . strip (). str . lower ()
De functie str.strip() verwijdert spaties uit elke tekenreeks en de functie str.lower() converteert elke tekenreeks naar kleine letters voordat de vergelijking wordt uitgevoerd.
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: Vergelijk tekenreeksen tussen twee kolommen in Panda’s
Laten we zeggen dat we het volgende panda’s DataFrame hebben dat twee kolommen bevat met de namen van het basketbalteam:
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
Houd er rekening mee dat sommige teamnamen op willekeurige plaatsen spaties bevatten en dat sommige teamnamen met een hoofdletter worden geschreven.
Laten we zeggen dat we de reeksen in elke rij willen vergelijken om te zien of de teamnamen in elke rij gelijk zijn.
Als we alleen het == symbool gebruiken bij het vergelijken van tekenreeksen, zullen panda’s alleen True retourneren als ze in dezelfde naamval staan en spaties op exact dezelfde posities bevatten:
#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
Houd er rekening mee dat slechts één regel True retourneert, omdat dit de enige regel is waarin de tekenreeksen dezelfde hoofdletter- en witruimteposities bevatten.
We kunnen echter de functie str.strip() gebruiken om spaties uit elke tekenreeks te verwijderen en de functie str.lower() om elke tekenreeks naar kleine letters te converteren voordat we de vergelijking uitvoeren:
#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
Nu retourneert elke regel True, behalve de regel waar de teamnamen „Hawks“ en „Jazz“ zijn, want zelfs na het verwijderen van de spaties en het converteren van de tekenreeksen naar kleine letters, zijn deze tekenreeksen niet gelijk.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in panda’s kunt uitvoeren:
Panda’s: specifieke tekens uit tekenreeksen verwijderen
Panda’s: Controleer of de string meerdere substrings bevat
Panda’s: lege tekenreeksen vervangen door NaN