Nie rozumiem, w jaki sposób NaN są traktowane w pandach, chętnie otrzymam wyjaśnienie, ponieważ logika wydaje mi się "zepsuta".Drop NaNs z pandy dataFrame
Mam plik csv, który ładuję za pomocą odczytu csv. Mam w tym pliku kolumnę "komentarze", która jest pusta przez większość czasu.
Izolowałem tę kolumnę i próbowałem różnymi sposobami, aby upuścić puste wartości. Pierwszy, gdy im pisanie:
marked_results.comments
uzyskać:
0 VP
1 VP
2 VP
3 TEST
4 NaN
5 NaN
....
Reszta kolumny jest NaN. , więc pandy ładują puste wpisy jako NaNs. świetny do tej pory. Teraz próbuję upuścić te wpisy. Iv wypróbował:
marked_results.comments.dropna()
i otrzymał tę samą kolumnę. nic nie spadło. zdezorientowany, próbowałem zrozumieć, dlaczego nic nie spadło, więc próbowałem:
marked_results.comments==NaN
i otrzymałem serię Fałszów. Nic nie było NaNs ... mylące. następnie próbowałem:
marked_results.comments==nan
I znowu, tylko falses. Byłem trochę wkurzony i uważałem się za mądrzejszego. więc zrobiłem:
In [71]:
comments_values = marked_results.comments.unique()
comments_values
Out[71]:
array(['VP', 'TEST', nan], dtype=object)
Ah, gotya! więc teraz próbowałem:
marked_results.comments==comments_values[2]
i zaskakująco, wciąż wszystkie wyniki są fałszywe !!! jedyną rzeczą, która pracowała była:
marked_results.comments.isnull()
który returnd pożądanego rezultatu. Czy ktoś może wyjaśnić, co się tutaj wydarzyło?
[NaN! = NaN] (http: // stackoverflow.com/questions/1565164/what-is-the-rationale-for-all-comparisons-return-false-for-ieee754-nan-values) - przeczytaj przyjętą odpowiedź Stephena Canona. – fvu