Suche nach String in allen Pandas DataFrame Spalten und Filter

9

Dachte, das wäre einfach, hätte aber Schwierigkeiten, einen eleganten Weg zu finden, alle Spalten in einem Datenrahmen gleichzeitig nach einer Teilzeichenkette abzusuchen. Wie würde ich df['col1'].str.contains('^') auf einen ganzen Datenrahmen gleichzeitig anwenden und nach Zeilen filtern, die Datensätze enthalten, die die Übereinstimmung enthalten?

    
horatio1701d 29.10.2014, 20:33
quelle

2 Antworten

17

Die Series.str.contains -Methode erwartet (standardmäßig) ein Regex-Muster, keine literale Zeichenfolge. Daher entspricht str.contains("^") dem Anfang einer beliebigen Zeichenfolge. Da jeder String einen Anfang hat, stimmt alles überein. Verwenden Sie stattdessen str.contains("\^") , um das Literalzeichen ^ zu finden.

Um jede Spalte zu überprüfen, könnten Sie for col in df verwenden, um die Spaltennamen zu durchlaufen und dann str.contains für jede Spalte aufzurufen:

%Vor%

Alternativ können Sie regex=False an str.contains übergeben, damit der Test den Operator Python in verwendet. aber (im Allgemeinen) mit Regex ist schneller.

    
unutbu 29.10.2014, 21:35
quelle
1

Versuchen Sie es mit:

%Vor%     
Puneet Sinha 30.10.2017 07:36
quelle

Tags und Links