Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich einen Pandas-DataFrame effizient nach mehreren Teilzeichenfolgen filtern und dabei Groß- und Kleinschreibung und Sonderzeichen behandeln?

Wie kann ich einen Pandas-DataFrame effizient nach mehreren Teilzeichenfolgen filtern und dabei Groß- und Kleinschreibung und Sonderzeichen behandeln?

Barbara Streisand
Freigeben: 2024-12-05 16:50:12
Original
242 Leute haben es durchsucht

How Can I Efficiently Filter a Pandas DataFrame for Multiple Substrings, Handling Case and Special Characters?

Effizientes Filtern von Pandas-Datenrahmen für mehrere Teilzeichenfolgen

Das Filtern von Datenrahmen für Teilzeichenfolgen ist eine häufige Aufgabe, kann jedoch bei großen Datensätzen rechenintensiv werden. Die Herausforderung verschärft sich noch, wenn es um ungewöhnliche Zeichen und Übereinstimmungen geht, bei denen die Groß-/Kleinschreibung nicht beachtet wird.

Problem:

Bei einem Pandas-Datenrahmen mit einer Zeichenfolgenspalte müssen Zeilen effizient so gefiltert werden Die Spalte enthält mindestens einen aus einer Liste von Teilzeichenfolgen, unabhängig von Groß- und Kleinschreibung und dem Vorhandensein von Sonderzeichen.

Ineffizient Ansatz:

Der anfängliche Ansatz bestand darin, jeden Teilstring in der Liste zu durchlaufen und die Methode str.contains() mit den Flags regex=False und case=False anzuwenden. Obwohl dieser Ansatz unkompliziert ist, kann er bei großen Datensätzen langsam sein.

Effizienter Ansatz:

Eine effizientere Lösung verwendet reguläre Ausdrücke, um ein Muster zu erstellen, das alle maskierten Elemente enthält Teilzeichenfolgen, die durch eine Regex-Pipe | verbunden sind. Dieses Muster wird dann mit der Methode str.contains() anhand jeder Zeichenfolge in der Spalte überprüft.

import re

lst = ['kdSj;af-!?', 'aBC+dsfa?\-', 'sdKaJg|dksaf-*']
esc_lst = [re.escape(s) for s in lst]
pattern = '|'.join(esc_lst)
df[col].str.contains(pattern, case=False)
Nach dem Login kopieren

Dieser Ansatz ist deutlich schneller als der iterative Ansatz, insbesondere bei großen Datensätzen und Teilzeichenfolgen, die Escapezeichen erfordern.

Leistungsbewertung:

Verwendung eines Datensatzes mit 50.000 Zeichenfolgen und 100 Teilzeichenfolgen benötigt die vorgeschlagene Methode etwa 1 Sekunde, während die iterative Methode etwa 5 Sekunden benötigt. Das Timing verbessert sich weiter, wenn einer der Teilstrings mit den Spaltenwerten übereinstimmt.

Das obige ist der detaillierte Inhalt vonWie kann ich einen Pandas-DataFrame effizient nach mehreren Teilzeichenfolgen filtern und dabei Groß- und Kleinschreibung und Sonderzeichen behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage