title: How to ignore errors in pandas.to_numeric() AND change str to int
body: <p>I have an unexpected response from pandas.to_numeric().
  If I use to_numeric</p>
  
  <pre class="lang-py prettyprint-override"><code>    a = pd.Series(['1', '2', '3', np.nan])
      b = pd.to_numeric(a, downcast='integer', errors='ignore')
      print([type(each) for each in b])
  </code></pre>
  
  <p>response is:<code>[float, float, float, float]</code></p>
  
  <p>but if I have real str in series, like</p>
  
  <pre class="lang-py prettyprint-override"><code>    a = pd.Series(['1', '2', '3', np.nan, 'a'])
      b = pd.to_numeric(a, downcast='integer', errors='ignore')
      print([type(each) for each in b])
  </code></pre>
  
  <p>it returns <code>[str, str, str, float, str]</code></p>
  
  <p>Doc says:</p>
  
  <blockquote>
    <p>If ‘ignore’, then <strong>invalid parsing</strong> will return the input</p>
  </blockquote>
  
  <p>And I think that invalid parsing is only 'a', so I should get: <code>[float, float, float, float, str]</code></p>
  
  <p>the question is how to fix it and get <code>[float, float, float, float, str]</code></p>