Warum testen `NaN == NaN` nicht für das fallenlassen von ein pandas dataFrame?
Bitte erklären, wie NaN ' s behandelt werden, in der pandas, da die folgende Logik scheint "kaputt" zu mir, ich habe versucht, verschiedene Möglichkeiten (siehe unten) fallen die leeren Werte.
Mein dataframe, die lade ich aus einer CSV-Datei mit read.csv
hat eine Spalte comments
ist leer die meiste Zeit.
Die Spalte marked_results.comments
sieht wie folgt aus; der rest der Spalte ist "NaN", so pandas Lasten leere Einträge, wie NaNs, so weit, so gut:
0 VP
1 VP
2 VP
3 TEST
4 NaN
5 NaN
....
Nun versuche ich drop die Einträge, nur diese funktioniert:
marked_results.comments.isnull()
Alle diese funktionieren nicht:
marked_results.comments.dropna()
gibt nur der gleichen Spalte, wird nichts gelöscht, verwirrend.marked_results.comments == NaN
gibt nur eine Reihe von alleFalse
s. Nichts war NaNs... verwirrend.- ebenfalls
marked_results.comments == nan
Ich auch versucht:
comments_values = marked_results.comments.unique()
array(['VP', 'TEST', nan], dtype=object)
# Ah, gotya! so now ive tried:
marked_results.comments == comments_values[2]
# but still all the results are Falses!!!
- NaN != NaN - gelesen von Stephen Canon akzeptierte Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie verwenden
isnull
undnotnull
zum test auf NaN (diese sind robuster mit pandas dtypes als numpy), siehe "Werte als fehlende" in den docs.Mit der Reihe Methode
dropna
auf eine Spalte, nicht auf dem ursprünglichen dataframe, aber das tun, was Sie wollen:Den
dropna
DataFrame Methode ist eine Teilmenge argument (fallen Zeilen, die NaNs in bestimmten Spalten):Müssen Sie testen
NaN
mitmath.isnan()
Funktion (Odernumpy.isnan
). NaN kann nicht überprüft werden mit dem Gleichheitsoperator.Hilfe-Funktion ->