title: Why does testing `NaN == NaN` not work for dropping from a pandas dataFrame?
body: <p>Please explain how NaN's are treated in pandas because the following logic seems "broken" to me, I tried various ways (shown below) to drop the empty values.</p>
  
  <p>My dataframe, which I load from a CSV file using <code>read.csv</code>, has a column <code>comments</code>, which is empty most of the time.</p>
  
  <p>The column <code>marked_results.comments</code> looks like this; all the rest of the column is NaN, so pandas loads empty entries as NaNs, so far so good:</p>
  
  <pre><code>0       VP
  1       VP
  2       VP
  3     TEST
  4      NaN
  5      NaN
  ....
  </code></pre>
  
  <p>Now I try to drop those entries, <strong>only this works:</strong></p>
  
  <ul>
  <li><code>marked_results.comments.isnull()</code></li>
  </ul>
  
  <p><strong>All these don't work:</strong></p>
  
  <ul>
  <li><code>marked_results.comments.dropna()</code> only gives the same column, nothing gets dropped, confusing.</li>
  <li><code>marked_results.comments == NaN</code> only gives a series of all <code>False</code>s. Nothing was NaNs... confusing.</li>
  <li>likewise <code>marked_results.comments == nan</code></li>
  </ul>
  
  <hr>
  
  <p>I also tried:</p>
  
  <pre><code>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!!!
  </code></pre>