Pandas: so vergleichen sie zeichenfolgen zwischen zwei spalten
Sie können die folgende grundlegende Syntax verwenden, um Zeichenfolgen zwischen zwei Spalten in einem Pandas-DataFrame zu vergleichen:
df[' col1 ']. str . strip (). str . lower () == df[' col2 ']. str . strip (). str . lower ()
Die Funktion str.strip() entfernt Leerzeichen aus jeder Zeichenfolge und die Funktion str.lower() wandelt jede Zeichenfolge in Kleinbuchstaben um, bevor der Vergleich durchgeführt wird.
Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.
Beispiel: Vergleichen Sie Zeichenfolgen zwischen zwei Spalten in Pandas
Nehmen wir an, wir haben den folgenden Pandas-DataFrame, der zwei Spalten mit den Namen der Basketballmannschaften enthält:
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
Beachten Sie, dass einige Teamnamen an zufälligen Stellen Leerzeichen enthalten und einige Teamnamen groß geschrieben werden.
Nehmen wir an, wir möchten die Zeichenfolgen in jeder Zeile vergleichen, um zu sehen, ob die Teamnamen in jeder Zeile gleich sind.
Wenn wir beim Vergleichen von Zeichenfolgen nur das Symbol == verwenden, gibt Pandas nur dann True zurück, wenn sie sich in derselben Groß-/Kleinschreibung befinden und Leerzeichen an genau denselben Positionen enthalten:
#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
Beachten Sie, dass nur eine Zeile True zurückgibt, da dies die einzige Zeile ist, in der die Zeichenfolgen dieselben Groß-/Kleinschreibungs- und Leerzeichenpositionen enthalten.
Wir können jedoch die Funktion str.strip() verwenden, um Leerzeichen aus jeder Zeichenfolge zu entfernen, und die Funktion str.lower(), um jede Zeichenfolge in Kleinbuchstaben umzuwandeln, bevor wir den Vergleich durchführen:
#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
Jetzt gibt jede Zeile True zurück, mit Ausnahme der Zeile, in der die Teamnamen „Hawks“ und „Jazz“ lauten, denn auch nach dem Entfernen der Leerzeichen und der Konvertierung der Zeichenfolgen in Kleinbuchstaben sind diese Zeichenfolgen nicht gleich.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in Pandas ausführen:
Pandas: So entfernen Sie bestimmte Zeichen aus Zeichenfolgen
Pandas: Überprüfen Sie, ob die Zeichenfolge mehrere Teilzeichenfolgen enthält
Pandas: So ersetzen Sie leere Strings durch NaN