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?
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:
Der dropna
Datenrahmen method hat ein Subset-Argument (um Zeilen zu löschen, die NaNs in bestimmten Spalten haben):
Sie müssen NaN
mit math.isnan()
function (oder numpy.isnan
) testen. NaNs können nicht mit dem Gleichheitsoperator überprüft werden.
Hilfe-Funktion - & gt;
%Vor%