title: return n smallest indexes by column using pandas
body: <p>I have the following (simplified) dataframe:</p>
  
  <pre><code>df = pd.DataFrame({'X': [1, 2, 3, 4, 5,6,7,8,9,10],
  'Y': [10,20,30,40,50,-10,-20,-30,-40,-50],
  'Z': [20,18,16,14,12,10,8,6,4,2]},index=list('ABCDEFGHIJ'))
  </code></pre>
  
  <p>Which gives the following:</p>
  
  <pre><code>    X   Y   Z
  A   1  10  20
  B   2  20  18
  C   3  30  16
  D   4  40  14
  E   5  50  12
  F   6 -10  10
  G   7 -20   8
  H   8 -30   6
  I   9 -40   4
  J  10 -50   2
  </code></pre>
  
  <p>I want to create a new dataframe that returns the index of the n smallest values, by column.</p>
  
  <p>Desired output (say, 3 smallest values):</p>
  
  <pre><code>   X  Y  Z
  0  A  J  J
  1  B  I  I
  2  C  H  H
  </code></pre>
  
  <p>What is the best way to do this?</p>