title: Pandas Float64 vs float64 dtypes (note capitalization) causing non-numeric errors?
body: <p>I was getting some weird errors that after much searching appeared to (maybe) come from my data not being considered numeric in some cases. This seems to be because I used Float64 dtype (which I thought was what I was supposed to do).</p>
  <p><strong>TLDR;</strong> What's the difference between Float64 and float64? Why is use of Float64 data breaking a lot of stuff, such as <code>pd.interpolate</code>? What is even the purpose of Float64 existing?</p>
  <p>Example:</p>
  <pre><code>import pandas as pd
  import numpy as np                                                             
                                                                                  
  TESTDATA = u&quot;&quot;&quot;\                                                                
      val1, val2, val3                                                            
       1.0,  2.0,  3.0                                                            
       4.0,  5.0,  6.0                                                            
       7.0,  8.0,  9.0                                                            
      10.0, NaN, 12.0                                                             
      13.0, 14.0, 15.0                                                            
  &quot;&quot;&quot;                                                                             
                                                                                  
  df = pd.read_csv(StringIO(TESTDATA), sep=r&quot;,\s*&quot;, engine='python', dtype=pd.Floa
  t64Dtype())                                                                     
                                                                                  
  print(df)                                                                       
  print()                                                                         
  print(df.dtypes) 
  </code></pre>
  <p>This outputs:</p>
  <pre><code>   val1  val2  val3
  0   1.0   2.0   3.0
  1   4.0   5.0   6.0
  2   7.0   8.0   9.0
  3  10.0  &lt;NA&gt;  12.0
  4  13.0  14.0  15.0
  
  val1    Float64
  val2    Float64
  val3    Float64
  dtype: object
  </code></pre>
  <p>So far everything looks good (as expected), but now I try:</p>
  <pre><code>df.interpolate()
  </code></pre>
  <p>and get:</p>
  <pre><code>ValueError: Invalid fill method. Expecting pad (ffill) or backfill (bfill). Got linear
  </code></pre>
  <p>This was rather baffling to me until I came across other answers and realized that this error might be coming about because <code>interpolate</code> thought the data was non-numeric and was therefore limiting the valid fill methods to ffill/bfill.</p>
  <p>So I found that the following works:</p>
  <pre><code>df = df.astype(np.float64).interpolate()                                             
  print(df.dtypes)                                                                
  print()                                                                         
  print(df)
  </code></pre>
  <p>with output:</p>
  <pre><code>val1    float64
  val2    float64
  val3    float64
  dtype: object
  
     val1  val2  val3
  0   1.0   2.0   3.0
  1   4.0   5.0   6.0
  2   7.0   8.0   9.0
  3  10.0  11.0  12.0
  4  13.0  14.0  15.0
  </code></pre>
  <p>Note that giving it <code>np.float64</code> or just <code>float</code> gives the same result.</p>
  <p>Running <code>pd.to_numeric(df.val1)</code> on the <code>Float64</code> dataframe returned a series that still has <code>Float64</code> type, indicating that pandas does seem to recognize that <code>Float64</code> is numeric.</p>