title: Prevent Pandas read_csv from interpreting NA as NaN but retaining NaN for empty values
body: <p>My question is related to this <a href="https://stackoverflow.com/questions/33952142/prevent-pandas-from-interpreting-na-as-nan-in-a-string/33952294">one</a>. I have a file named 'test.csv' with 'NA' as a value for <code>region</code>. I want to read this in as 'NA', not 'NaN'. However, there are missing values in other columns in test.csv, which I want to retain as 'NaN'. How can I do this? </p>
  
  <pre><code># test.csv looks like this:
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/6HAY1.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/6HAY1.png" alt="enter image description here"></a></p>
  
  <p>Here's what I've tried:</p>
  
  <pre><code>import pandas as pd
  # This reads NA as NaN
  df = pd.read_csv(test.csv)
  df
      region  date    expenses
  0   NaN   1/1/2019  53
  1   EU    1/2/2019  NaN
  
  # This reads NA as NA, but doesn't read missing expense as NaN
  df = pd.read_csv('test.csv', keep_default_na=False, na_values='_')
  df
      region  date    expenses
  0   NA    1/1/2019  53
  1   EU    1/2/2019  
  
  # What I want:
      region  date    expenses
  0   NA    1/1/2019  53
  1   EU    1/2/2019  NaN
  </code></pre>
  
  <p>The problem with adding the argument <code>keep_default_na=False</code> is that the second value for <code>expenses</code> does not get read in as <code>NaN</code>. So if I then try <code>pd.isnull(df['value'][1])</code> this is returned as <code>False</code>.  </p>