Python / Pandas: Löscht die Zeilen aus dem Datenrahmen bei Übereinstimmung der Zeichenfolge aus der Liste

8

Ich habe eine .csv-Datei mit Kontaktinformationen, die ich als Pandas-Datenframe importiere.

%Vor%

Nach dem Importieren der Daten möchte ich Zeilen löschen, in denen ein Feld einen von mehreren Teilstrings in einer Liste enthält. Zum Beispiel:

%Vor%

Was ist der bevorzugte Weg, dies in Pandas zu tun? Sollte dies sogar ein Nachbearbeitungsschritt sein, oder ist es vorzuziehen, dies vor dem Schreiben in den Datenrahmen an erster Stelle zu filtern? Mein Gedanke war, dass dies einfacher in einem Datenrahmenobjekt zu manipulieren wäre.

    
Sidney VanNess 27.07.2015, 21:13
quelle

2 Antworten

19

Verwenden Sie isin und Übergeben Sie Ihre Liste von Begriffen, nach denen Sie suchen können, dann können Sie die boolesche Maske mit ~ negieren, und diese Zeilen werden herausgefiltert:

%Vor%

Eine andere Methode besteht darin, die Terme so zu verbinden, dass sie zu einer Regex wird und die vektorisierte str.contains :

%Vor%

IMO es wird einfacher und wahrscheinlich schneller, die Filterung als Nachbearbeitungsschritt durchzuführen, denn wenn Sie sich entscheiden, während des Lesens zu filtern, wachsen Sie iterativ den Datenrahmen, der nicht effizient ist.

Alternativ können Sie die CSV in Chunks lesen, die Zeilen, die Sie nicht wollen, herausfiltern und die Chunks an Ihre Ausgabe csv

anhängen     
EdChum 27.07.2015, 21:18
quelle
1

Ein anderer Weg mit query

%Vor%     
Zero 04.10.2017 18:42
quelle

Tags und Links