title: Pandas group by to convert different rows to one row with array of values
body: <p>Suppose, we have next dataframe : </p>
  
  <pre><code>df = pd.DataFrame({'animal': 'cat dog cat fish dog cat cat'.split(),
                    'size': list('SSMMMLL'),
                    'weight': [8, 10, 11, 1, 20, 12, 12],
                    'adult' : [False] * 5 + [True] * 2})
  
     adult animal size  weight
  0  False    cat    S       8
  1  False    dog    S      10
  2  False    cat    M      11
  3  False   fish    M       1
  4  False    dog    M      20
  5   True    cat    L      12
  6   True    cat    L      12
  </code></pre>
  
  <p>And I want to convert it to the following form(denormalise it) by weights:</p>
  
  <pre><code>         weights
  animal                 
  cat     [8, 11, 12, 12]
  dog            [10, 20]
  fish                [1]
  </code></pre>
  
  <p>Currently, I use the following code : </p>
  
  <pre><code>df.groupby('animal',as_index=True).apply(lambda sf : pd.Series([list(sf['weight'])]
  ,index=['weights']))
  </code></pre>
  
  <p>but I wonder if there exists a clear way to do this</p>