Pandas-Filterung für mehrere Teilstrings in Serie

Brauche ich zum filtern von Zeilen in einer pandas dataframe, so dass eine bestimmte Zeichenfolge-Spalte enthält mindestens eine aus einer Liste von Teilstrings zur Verfügung gestellt. Die Zeichenketten können ungewöhnliche /regex-Zeichen. Der Vergleich sollte nicht mit regex und ist der groß-und Kleinschreibung.

Beispiel:

lst = ['kdSj;af-!?', 'aBC+dsfa?\-', 'sdKaJg|dksaf-*']

Ich derzeit tragen Sie die Maske wie diese:

mask = np.logical_or.reduce([df[col].str.contains(i, regex=False, case=False) for i in lst])
df = df[mask]

Mein dataframe ist groß (~1mio Zeilen) und lst hat die Länge 100. Gibt es einen effizienteren Weg? Zum Beispiel, wenn das erste Element in lst gefunden wird, sollten wir Sie nicht haben, um zu testen alle nachfolgenden Zeichenfolgen für diese Zeile.

InformationsquelleAutor jpp | 2018-01-31
Schreibe einen Kommentar