title: Efficiently applying a function to a grouped pandas DataFrame in parallel
body: <p>I often need to apply a function to the groups of a very large <code>DataFrame</code> (of mixed data types) and would like to take advantage of multiple cores.</p>
  
  <p>I can create an iterator from the groups and use the multiprocessing module, but it is not efficient because every group and the results of the function must be pickled for messaging between processes.</p>
  
  <p>Is there any way to avoid the pickling or even avoid the copying of the <code>DataFrame</code> completely? It looks like the shared memory functions of the multiprocessing modules are limited to <code>numpy</code> arrays. Are there any other options?</p>