title: Get pandas.read_csv to read empty fields as NaN, and empty strings as empty strings
body: <p>This is quite the opposite of <a href="https://stackoverflow.com/questions/10867028/get-pandas-read-csv-to-read-empty-values-as-empty-string-instead-of-nan">Get pandas.read_csv to read empty values as empty string instead of nan</a></p>
  
  <p>Given the following CSV file:</p>
  
  <pre><code>col,val
  "hi
  there",1
  ,2
  \f\,3
  "",4
  """hi""",5
  </code></pre>
  
  <p>I want it to be read as:</p>
  
  <pre><code>         col  val
  0  hi\nthere    1
  1        NaN    2
  2        \f\    3
  3               4
  4       "hi"    5
  </code></pre>
  
  <p>That is, reading the empty field (val 2)  as <code>NaN</code>, while keeping the empty string (val 4) as empty string.</p>
  
  <p>Currently <code>pd.read_csv</code> converts val 2 and val 4 both as <code>NaN</code>, or if I use <code>na_filter=False</code> both are kept as empty string.</p>
  
  <p>I'm assuming these two representations mean different things in CSV (empty fields vs empty string), so I'm assuming pandas should be able to distinguish this too.</p>
  
  <p>Is there a way to make pandas to distinguish these two cases? Or is my assumption wrong, that the two representations are actually the same? (please point me to a CSV standard if the second one is the case)</p>
  
  <p>More information, I got the CSV by exporting BigQuery table (with the intended meaning, val 2 is null and val 4 is empty string) into CSV. And I want to get the exact same table back.
  So this example is not just a contrived example, but is actually used by BigQuery when exporting to CSV.</p>
  
  <p>EDIT: further search reveals a <a href="https://github.com/pandas-dev/pandas/issues/10802" rel="noreferrer">Github issue 4 years ago</a> that discusses similar point (see <a href="https://github.com/pandas-dev/pandas/issues/10802#issuecomment-294235928" rel="noreferrer">this comment</a>, for example), and one of the commenter mentions that there is some coercion (I'm not sure what they refer to, but I understand it as coercion between empty field and empty string). Is this still happening?</p>