Lasse NaNs aus einem pandas dataFrame fallen

7

Ich verstehe nicht, wie NaNs in Pandas behandelt werden, würde mich freuen, eine Erklärung zu bekommen, weil die Logik für mich "gebrochen" scheint.

Ich habe eine CSV-Datei, die mit lesen csv laden. Ich habe eine Spalte "Kommentare" in dieser Datei, die die meiste Zeit leer ist.

Ich habe diese Spalte isoliert und verschiedene Möglichkeiten zum Löschen der leeren Werte versucht. Erstens, wenn ich schreibe:

%Vor%

Ich bekomme:

%Vor%

Der Rest der Spalte ist NaN. So laden Pandas leere Einträge als NaNs. Großartig bisher. Jetzt versuche ich, diese Einträge fallen zu lassen. Iv versuchte es:

%Vor%

und erhielt die gleiche Spalte. nichts wurde fallen gelassen. verwirrt, ich hatte versucht zu verstehen, warum nichts fallen gelassen wurde, also habe ich versucht:

%Vor%

und erhielt eine Reihe von Falsches. Nichts war NaNs ... verwirrend. dann habe ich versucht:

%Vor%

Und wieder, nichts als False. Ich war dort ein bisschen sauer und hielt mich für klüger. also tat ich:

%Vor%

Ah, Gotya! So jetzt habe ich versucht:

%Vor%

und überraschend, immer noch sind alle Ergebnisse Falses !!! Das einzige was funktionierte war:

%Vor%

die das gewünschte Ergebnis zurückgeben. Kann jemand erklären was hier passiert ist?

    
idoda 31.07.2013, 12:03
quelle

2 Antworten

14

Sie sollten isnull und notnull verwenden, um auf NaN zu testen (diese sind mit pandas dtypes robuster als numpy), siehe "Werte werden in der Dokumentation als fehlend erachtet .

Mit der Series-Methode dropna für eine Spalte gewonnen Den ursprünglichen Datenrahmen nicht beeinflussen, aber tun, was Sie wollen:

%Vor%

Der dropna Datenrahmen method hat ein Subset-Argument (um Zeilen zu löschen, die NaNs in bestimmten Spalten haben):

%Vor%     
Andy Hayden 31.07.2013, 12:18
quelle
7

Sie müssen NaN mit math.isnan() function (oder numpy.isnan ) testen. NaNs können nicht mit dem Gleichheitsoperator überprüft werden.

%Vor%

Hilfe-Funktion - & gt;

%Vor%     
Sukrit Kalra 31.07.2013 12:04
quelle

Tags und Links