Wie um zu testen, ob ein string mit einem Teilstring in einer Liste?

Gibt es eine Funktion, die wäre gleichbedeutend mit einer Kombination von df.isin() und df[col].str.contains()?

Zum Beispiel, sagen, dass ich die Serie
s = pd.Series(['cat','hat','dog','fog','pet']), und ich möchte finden Sie alle Orte, an denen s enthält ['og', 'at'], ich würde wollen, um alles, aber pet.

Ich habe eine Lösung, aber es ist eher unelegant:

searchfor = ['og', 'at']
found = [s.str.contains(x) for x in searchfor]
result = pd.DataFrame[found]
result.any()

Gibt es einen besseren Weg, dies zu tun?

  • Hinweis: Es gibt eine Lösung beschrieben von @unutbu, die effizienter als die Verwendung von pd.Series.str.contains. Wenn die Leistung ein Problem ist, dann kann dies eine Untersuchung Wert.
  • Empfehle dem Auschecken die Antwort für Teil-string-Suche mit mehreren keywords/regexes (nach unten scrollen, um die "Mehrere Substring-Suche" Unterüberschrift).
InformationsquelleAutor ari | 2014-10-26
Schreibe einen Kommentar