Heim  >  Artikel  >  Backend-Entwicklung  >  Wie können reguläre Ausdrücke die Leistung der Teilstring-Filterung der Pandas-Serie verbessern?

Wie können reguläre Ausdrücke die Leistung der Teilstring-Filterung der Pandas-Serie verbessern?

DDD
DDDOriginal
2024-11-27 00:14:10624Durchsuche

How Can Regular Expressions Improve Pandas Series Substring Filtering Performance?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn