title: Index pandas DataFrame by column numbers, when column names are integers
body: <p>I am trying to keep just certain columns of a DataFrame, and it works fine when column names are strings:</p>
  
  <pre><code>In [2]: import numpy as np
  
  In [3]: import pandas as pd
  
  In [4]: a = np.arange(35).reshape(5,7)
  
  In [5]: df = pd.DataFrame(a, ['x', 'y', 'u', 'z', 'w'], ['a', 'b', 'c', 'd', 'e', 'f', 'g'])
  
  In [6]: df
  Out[6]: 
      a   b   c   d   e   f   g
  x   0   1   2   3   4   5   6
  y   7   8   9  10  11  12  13
  u  14  15  16  17  18  19  20
  z  21  22  23  24  25  26  27
  w  28  29  30  31  32  33  34
  
  [5 rows x 7 columns]
  
  In [7]: df[[1,3]] #No problem
  Out[7]: 
      b   d
  x   1   3
  y   8  10
  u  15  17
  z  22  24
  w  29  31
  </code></pre>
  
  <p>However, when column names are integers, I am getting a key error:</p>
  
  <pre><code>In [8]: df = pd.DataFrame(a, ['x', 'y', 'u', 'z', 'w'], range(10, 17))
  
  In [9]: df
  Out[9]: 
     10  11  12  13  14  15  16
  x   0   1   2   3   4   5   6
  y   7   8   9  10  11  12  13
  u  14  15  16  17  18  19  20
  z  21  22  23  24  25  26  27
  w  28  29  30  31  32  33  34
  
  [5 rows x 7 columns]
  
  In [10]: df[[1,3]]
  </code></pre>
  
  <p>Results in:</p>
  
  <pre><code>KeyError: '[1 3] not in index'
  </code></pre>
  
  <p>I can see why pandas does not allow that -> to avoid mix up between indexing by column names and column numbers. However, is there a way to tell pandas that I want to index by column numbers? Of course, one solution is to convert column names to strings, but I am wondering if there is a better solution.</p>