Pandas: Effizientes Filtern von Zeilen nach mehreren Teilzeichenfolgen
Das Filtern von Pandas-Datenrahmen basierend auf mehreren Teilzeichenfolgen kann eine Herausforderung sein, insbesondere wenn die Teilzeichenfolgen ungewöhnliche Zeichen enthalten . Dieser Artikel bietet eine effiziente Lösung unter Verwendung einer Kombination aus Regex- und Pandas-String-Matching-Funktionen.
Die bereitgestellte Liste von Teilstrings (lst) enthält Elemente mit regulären und Sonderzeichen. Um sie wörtlich zuzuordnen, können wir diese Sonderzeichen mit re.escape maskieren und sie mit einer Regex-Pipe (|) verbinden.
esc_lst = [re.escape(s) for s in lst] pattern = '|'.join(esc_lst)
Jetzt können wir jede Zeile der Zielspalte (col) effizient überprüfen. gegen das Muster mit str.contains:
col.str.contains(pattern, case=False)
Dieser Ansatz übertrifft die ursprüngliche Lösung, die verschachtelte Schleifen und mehrere str.contains verwendete, deutlich Aufrufe.
Leistungsvergleich
Bei Verwendung eines Datensatzes mit 50.000 Zeichenfolgen mit 20 Zeichen und 100 Teilzeichenfolgen mit 5 Zeichen dauert die vorgeschlagene Methode etwa 1 Sekunde:
%timeit col.str.contains(pattern, case=False) 1 loop, best of 3: 981 ms per loop
Im Vergleich dazu dauerte der ursprüngliche Ansatz etwa 5 Sekunden Datensatz.
Hinweis: Die Zeitangaben stellen Worst-Case-Szenarien dar, bei denen es keine Übereinstimmungen gab. Die vorgeschlagene Methode ist bei Übereinstimmungen sogar noch leistungsfähiger, da sie die Prüfung von Teilzeichenfolgen stoppt, sobald eine Übereinstimmung gefunden wird.
Das obige ist der detaillierte Inhalt vonWie kann ich Pandas-Zeilen basierend auf mehreren Teilzeichenfolgen, einschließlich Sonderzeichen, effizient filtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!