Tôi không hiểu cách thức NaN đang được xử lý trong gấu trúc, sẽ rất vui khi nhận được một số lời giải thích, bởi vì logic dường như "bị hỏng" với tôi.Thả NaN từ một dữ liệu gấu trúcFrame
Tôi có tệp csv, tải im bằng cách đọc csv. tôi có một cột "bình luận" trong tập tin đó, phần lớn trống rỗng.
Tôi đã phân lập cột đó và thử thay đổi các cách để xóa các giá trị trống. đầu tiên, khi im viết:
marked_results.comments
tôi nhận được:
0 VP
1 VP
2 VP
3 TEST
4 NaN
5 NaN
....
Phần còn lại của cột là NaN. vì vậy gấu sẽ tải các mục trống dưới dạng NaN. tuyệt vời cho đến nay. Hiện tại, tôi đang cố gắng xóa các mục nhập đó. Iv đã thử:
marked_results.comments.dropna()
và nhận được cùng một cột. không có gì bị bỏ. bối rối, tôi đã cố gắng hiểu lý do tại sao không có gì bị bỏ, vì vậy tôi đã thử:
marked_results.comments==NaN
và nhận một loạt các Falses. Không có gì là NaN ... khó hiểu. sau đó tôi đã thử:
marked_results.comments==nan
Và một lần nữa, không có gì ngoài việc bị giả mạo. Tôi có một chút tức giận ở đó, và được cho là thông minh hơn. vì vậy tôi đã làm:
In [71]:
comments_values = marked_results.comments.unique()
comments_values
Out[71]:
array(['VP', 'TEST', nan], dtype=object)
Ah, gotya! vì vậy bây giờ ive đã thử:
marked_results.comments==comments_values[2]
và đáng ngạc nhiên, vẫn còn tất cả kết quả là Falses !!! điều duy nhất hoạt động là:
marked_results.comments.isnull()
sẽ trả lại kết quả mong muốn. Ai đó có thể giải thích những gì đã xảy ra ở đây không ??
[NaN! = NaN] (http: // stackoverflow.com/questions/1565164/what-is-the-lý do-cho-tất cả-so sánh-return-false-cho-ieee754-nan-giá trị) - đọc trả lời được chấp nhận của Stephen Canon. – fvu