title: Grouping data in a dataframe from multiple columns (including an autogenerated column)
body: <p>I am trying to create an index from two columns in a pandas dataframe. However, I first want to 'bucket' the values in one of the columns, before using the 'bucketed' values in the index.</p>
  
  <p>The code below should help explain further:</p>
  
  <pre><code>import numpy as np
  import pandas as pd
  
  # No error checking, pseudocode  ...
  def bucket_generator(source_data, colname, step_size):
      # create bucket column (string)
      source_data['bucket'] = ''
  
      # obtain the series to operate on
      series = source_data['colname']
  
      # determine which bucket number each cell in series would belong to,
      # by dividing the cell value by the step_size
  
      # Naive way would be to iterate over cells in series, generating a 
      # bucket label like "bucket_{0:+}".format(cell_value/step_size),
      # then stick it in a cell in the bucket column, but there must be a more
      # 'dataframe' way of doing it, rather than looping
  
  
  
  
  
  data = {'a': (10,3,5,7,15,20,10,3,5,7,19,5,7,5,10,5,3,7,20,20),
          'b': (98.5,107.2,350,211.2,120.5,-70.8,135.9,205.1,-12.8,280.5,-19.7,77.2,88.2,69.2,101.2,-302.
          4,-79.8,-257.6,89.6,95.7),
          'c': (12.5,23.4,11.5,45.2,17.6,19.5,0.25,33.6,18.9,6.5,12.5,26.2,5.2,0.3,7.2,8.9,2.1,3.1,19.1,2
         0.2)
        }
  
  df = pd.DataFrame(data)
  
  df
  
       a      b      c
  0   10   98.5  12.50
  1    3  107.2  23.40
  2    5  350.0  11.50
  3    7  211.2  45.20
  4   15  120.5  17.60
  5   20  -70.8  19.50
  6   10  135.9   0.25
  7    3  205.1  33.60
  8    5  -12.8  18.90
  9    7  280.5   6.50
  10  19  -19.7  12.50
  11   5   77.2  26.20
  12   7   88.2   5.20
  13   5   69.2   0.30
  14  10  101.2   7.20
  15   5 -302.4   8.90
  16   3  -79.8   2.10
  17   7 -257.6   3.10
  18  20   89.6  19.10
  19  20   95.7  20.20
  </code></pre>
  
  <p>This is what I want to do:</p>
  
  <ol>
  <li>Correctly implement function <code>bucket_generator</code></li>
  <li>Group the dataframe data by cols 'a' THEN 'bucket' label</li>
  <li>Select rows from the dataframe for a given value (integer) in the 'a' column AND bucket 'label in the bucket column.</li>
  </ol>