Verbesserung der Leistung für die Filterung mehrerer Teilzeichenfolgen in Pandas-Serien
Beim Versuch, Zeilen zu filtern, in denen eine bestimmte Zeichenfolgenspalte mindestens eine Teilzeichenfolge aus a enthält In dieser Liste können herkömmliche Methoden mit np.logical_or.reduce() für große Datensätze ineffizient sein. In diesem Artikel wird ein alternativer Ansatz untersucht, der reguläre Ausdrücke nutzt, um die Leistung zu verbessern.
Vorgeschlagene Lösung
Anstatt regex=False in str.contains() zu verwenden, verwenden wir reguläre Ausdrücke nach ordnungsgemäßem Escapen der bereitgestellten Teilzeichenfolgen mit re.escape(). Dies gewährleistet wörtliche Übereinstimmungen und keine Regex-Interpretation. Die maskierten Teilzeichenfolgen werden dann mithilfe einer Regex-Pipe (|) zu einem einzigen Muster kombiniert.
Maskierungsprozess
Die Maskierungsphase wird zu einer Schleife durch die Serie, in der überprüft wird, ob Jede Zeichenfolge entspricht dem Muster:
df[col].str.contains(pattern, case=False)
Leistung Vergleich
Unter Verwendung eines Beispieldatensatzes mit 100 Teilstrings der Länge 5 und 50.000 Strings der Länge 20 dauerte die vorgeschlagene Methode etwa 1 Sekunde. Die ursprüngliche Methode dauerte für die gleichen Daten etwa 5 Sekunden.
Hinweis
Diese Lösung geht von einem „Worst-Case“-Szenario aus, bei dem es keine Teilzeichenfolgenübereinstimmungen gibt. In Fällen mit Übereinstimmungen wird die Leistung weiter verbessert. Darüber hinaus ist dieser Ansatz effizienter als die ursprüngliche Methode und reduziert die Anzahl der erforderlichen Prüfungen pro Zeile.
Das obige ist der detaillierte Inhalt vonWie können reguläre Ausdrücke die Leistung der Teilstring-Filterung der Pandas-Serie verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!