Hintergrund
Filtern großer Pandas-Datenrahmen basierend auf mehreren Teilstrings in einem String Spalte kann ein rechenintensiver Vorgang sein. Der herkömmliche Ansatz besteht darin, für jeden Teilstring eine Maske anzuwenden und diese dann mithilfe logischer Operationen zu reduzieren.
Vorgeschlagener Ansatz
Um die Effizienz zu steigern, empfehlen wir die Nutzung regulärer Ausdrücke (mit Escapezeichen). Sonderzeichen) für den Teilstring-Abgleich. Indem wir die maskierten Teilzeichenfolgen mit einer Regex-Pipe (|) verbinden, können wir jede Teilzeichenfolge mit der Zeichenfolge testen, bis eine Übereinstimmung gefunden wird.
Implementierung
import re # Escape special characters in substrings esc_lst = [re.escape(s) for s in lst] # Join escaped substrings using regex pipe pattern = '|'.join(esc_lst) # Filter based on concatenated pattern df[col].str.contains(pattern, case=False)
Überlegungen zur Leistung
Die Leistung wird verbessert, indem die Anzahl der erforderlichen Tests pro Zeile reduziert wird. Die Methode prüft Teilzeichenfolgen, bis eine Übereinstimmung gefunden wird, wodurch unnötige Iterationen vermieden werden.
Benchmarking
Unter Verwendung eines Beispieldatenrahmens mit 50.000 Zeichenfolgen und 100 Teilzeichenfolgen dauert die vorgeschlagene Methode etwa eine Sekunde, im Vergleich zu den fünf Sekunden des herkömmlichen Ansatzes. Dieser Leistungsvorteil würde mit einem größeren Datensatz zunehmen.
Fazit
Durch die Nutzung regulärer Ausdrücke mit maskierten Sonderzeichen können wir Pandas-Datenrahmen effizient nach mehreren Teilzeichenfolgen filtern und so die Datenmenge erheblich reduzieren Rechenaufwand.
Das obige ist der detaillierte Inhalt vonWie können reguläre Ausdrücke die Pandas-Filterung für mehrere Teilzeichenfolgen in einer Serie optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!