Possible memory leak with HDFStores and dataframes?
I am running this loop over approx  48 large HDFstores, each with approx 17 million rows. After roughly half the list done, it crashes with a memory error on my 96 GB RAM machine running CentOS6 64-bit.

``` python
for fname in fnames:
    print fname
    df = pd.read_hdf(fname, 'df', columns=[colname])
    df['mybool'] = df[colname] == 90
    df['label'] = label(df.mybool)[0]
    df['time'] = df.index
    g = df.groupby('label')['time']
    pd.DataFrame({'start':g.first(),
                  'duration':g.last() - g.first()})[1:].to_hdf('./earth_scans.h5',
                                                           'df',
                                                           mode='a',
                                                           format='table',
                                                           append=True)
```

The error is:

``` python
---------------------------------------------------------------------------
MemoryError                               Traceback (most recent call last)
<ipython-input-11-6c43f9f5c6be> in <module>()
      3 for fname in fnames:
      4     print fname
----> 5     df = pd.read_hdf(fname, 'df', columns=[colname])
      6     df['mybool'] = df[colname] == 90
      7     df['label'] = label(df.mybool)[0]

/usr/local/epd/lib/python2.7/site-packages/pandas-0.12.0_963_g383010f-py2.7-linux-x86_64.egg/pandas/io/pytables.pyc in read_hdf(path_or_buf, key, **kwargs)
    308         store = HDFStore(path_or_buf, **kwargs)
    309         try:
--> 310             return f(store, True)
    311         except:
    312 

/usr/local/epd/lib/python2.7/site-packages/pandas-0.12.0_963_g383010f-py2.7-linux-x86_64.egg/pandas/io/pytables.pyc in <lambda>(store, auto_close)
    300 
    301     f = lambda store, auto_close: store.select(
--> 302         key, auto_close=auto_close, **kwargs)
    303 
    304     if isinstance(path_or_buf, compat.string_types):

/usr/local/epd/lib/python2.7/site-packages/pandas-0.12.0_963_g383010f-py2.7-linux-x86_64.egg/pandas/io/pytables.pyc in select(self, key, where, start, stop, columns, iterator, chunksize, auto_close, **kwargs)
    595 
    596         return TableIterator(self, func, nrows=s.nrows, start=start, stop=stop,
--> 597                              auto_close=auto_close).get_values()
    598 
    599     def select_as_coordinates(

/usr/local/epd/lib/python2.7/site-packages/pandas-0.12.0_963_g383010f-py2.7-linux-x86_64.egg/pandas/io/pytables.pyc in get_values(self)
   1225 
   1226     def get_values(self):
-> 1227         results = self.func(self.start, self.stop)
   1228         self.close()
   1229         return results

/usr/local/epd/lib/python2.7/site-packages/pandas-0.12.0_963_g383010f-py2.7-linux-x86_64.egg/pandas/io/pytables.pyc in func(_start, _stop)
    584         def func(_start, _stop):
    585             return s.read(where=where, start=_start, stop=_stop,
--> 586                           columns=columns, **kwargs)
    587 
    588         if iterator or chunksize is not None:

/usr/local/epd/lib/python2.7/site-packages/pandas-0.12.0_963_g383010f-py2.7-linux-x86_64.egg/pandas/io/pytables.pyc in read(self, where, columns, **kwargs)
   3611             df = frames[0]
   3612         else:
-> 3613             df = concat(frames, axis=1, verify_integrity=False).consolidate()
   3614 
   3615         # apply the selection filters & axis orderings

/usr/local/epd/lib/python2.7/site-packages/pandas-0.12.0_963_g383010f-py2.7-linux-x86_64.egg/pandas/core/generic.pyc in consolidate(self, inplace)
   1505             cons_data = self._protect_consolidate(f)
   1506             if cons_data is self._data:
-> 1507                 cons_data = cons_data.copy()
   1508             return self._constructor(cons_data).__finalize__(self)
   1509 

/usr/local/epd/lib/python2.7/site-packages/pandas-0.12.0_963_g383010f-py2.7-linux-x86_64.egg/pandas/core/internals.pyc in copy(self, deep)
   2458             new_axes = list(self.axes)
   2459         return self.apply('copy', axes=new_axes, deep=deep,
-> 2460                         ref_items=new_axes[0], do_integrity_check=False)
   2461 
   2462     def as_matrix(self, items=None):

/usr/local/epd/lib/python2.7/site-packages/pandas-0.12.0_963_g383010f-py2.7-linux-x86_64.egg/pandas/core/internals.pyc in apply(self, f, *args, **kwargs)
   2142                 applied = f(blk, *args, **kwargs)
   2143             else:
-> 2144                 applied = getattr(blk, f)(*args, **kwargs)
   2145 
   2146             if isinstance(applied, list):

/usr/local/epd/lib/python2.7/site-packages/pandas-0.12.0_963_g383010f-py2.7-linux-x86_64.egg/pandas/core/internals.pyc in copy(self, deep, ref_items)
    522         values = self.values
    523         if deep:
--> 524             values = values.copy()
    525         if ref_items is None:
    526             ref_items = self.ref_items

MemoryError: 
```

This loop is running inside an iPython notebook via a remote notebook server.

To my understanding, the automatic garbage collection should get rid of the intermediate dataframes I am creating inside the loop, am I doing anything stupid or is this leaking somehow?
