In [1]:
def galapagos_to_pandas(in_filename='/home/ppzsb1/quickdata/GAMA_9_all_combined_gama_only_bd6.fits',
                        out_filename=None):
    """Convert a GALAPAGOS multi-band catalogue to a pandas-compatible HDF5 file"""
    from astropy.io import fits
    import pandas as pd
    import re
    import tempfile
    
    if out_filename is None:
        out_filename = re.sub('.fits$', '', in_filename)+'.h5'
    data = fits.getdata(in_filename, 1)
    with tempfile.NamedTemporaryFile() as tmp:
        with pd.get_store(tmp.name, mode='w') as tmpstore:
            for n in data.names:
                d = data[n]
                if len(d.shape) == 1:
                    new_cols = pd.DataFrame(d, columns=[n])
                else:
                    new_cols = pd.DataFrame(d, columns=['{}_{}'.format(n,b) for b in 'RUGIZYJHK'])
                tmpstore[n] = new_cols
            with pd.get_store(out_filename, mode='w', complib='blosc', complevel=5) as store:
                # Use format='table' on next line to save as a pytables table 
                store.put('data', pd.concat([tmpstore[n] for n in data.names], axis=1))
    return pd.HDFStore(out_filename)

In [2]:
store = galapagos_to_pandas()

In [3]:
store


Out[3]:
<class 'pandas.io.pytables.HDFStore'>
File path: /home/ppzsb1/quickdata/GAMA_9_all_combined_gama_only_bd6.h5
/data            frame        (shape->[51838,1947])

In [4]:
store['data'].columns


Out[4]:
Index([u'SPECID', u'SURVEY', u'SURVEY_CODE', u'RA', u'DEC', u'WMIN', u'WMAX', u'Z', u'NQ', u'PROB', u'FILENAME', u'URL', u'URL_IMG', u'CATAID', u'GAMA_NAME', u'IC_FLAG', u'DIST', u'IS_SBEST', u'IS_BEST', u'NUMBER', u'X_IMAGE', u'Y_IMAGE', u'CXX_IMAGE', u'CYY_IMAGE', u'CXY_IMAGE', u'THETA_IMAGE', u'THETA_WORLD', u'ELLIPTICITY', u'KRON_RADIUS', u'A_IMAGE', u'B_IMAGE', u'ALPHA_J2000', u'DELTA_J2000', u'BACKGROUND', u'FLUX_BEST', u'FLUXERR_BEST', u'MAG_BEST', u'MAGERR_BEST', u'FLUX_RADIUS', u'ISOAREA_IMAGE', u'FWHM_IMAGE', u'FLAGS', u'CLASS_STAR', u'FLAG_GALFIT', u'NITER_GALFIT', u'NEIGH_GALFIT', u'CHISQ_GALFIT', u'VERSION_GALFIT', u'FIRSTCON_GALFIT', u'LASTCON_GALFIT', u'NDOF_GALFIT', u'NFREE_GALFIT', u'NFIX_GALFIT', u'CHI2NU_GALFIT', u'INITFILE', u'CONSTRNT', u'FITSECT', u'CONVBOX', u'CPUTIME_SETUP_GALFIT', u'CPUTIME_FIT_GALFIT', u'CPUTIME_TOTAL_GALFIT', u'ORG_IMAGE', u'FILE_GALFIT', u'X_GALFIT', u'XERR_GALFIT', u'X_GALFIT_CHEB_R', u'X_GALFIT_CHEB_U', u'X_GALFIT_CHEB_G', u'X_GALFIT_CHEB_I', u'X_GALFIT_CHEB_Z', u'X_GALFIT_CHEB_Y', u'X_GALFIT_CHEB_J', u'X_GALFIT_CHEB_H', u'X_GALFIT_CHEB_K', u'XERR_GALFIT_CHEB_R', u'XERR_GALFIT_CHEB_U', u'XERR_GALFIT_CHEB_G', u'XERR_GALFIT_CHEB_I', u'XERR_GALFIT_CHEB_Z', u'XERR_GALFIT_CHEB_Y', u'XERR_GALFIT_CHEB_J', u'XERR_GALFIT_CHEB_H', u'XERR_GALFIT_CHEB_K', u'Y_GALFIT', u'YERR_GALFIT', u'Y_GALFIT_CHEB_R', u'Y_GALFIT_CHEB_U', u'Y_GALFIT_CHEB_G', u'Y_GALFIT_CHEB_I', u'Y_GALFIT_CHEB_Z', u'Y_GALFIT_CHEB_Y', u'Y_GALFIT_CHEB_J', u'Y_GALFIT_CHEB_H', u'Y_GALFIT_CHEB_K', u'YERR_GALFIT_CHEB_R', u'YERR_GALFIT_CHEB_U', u'YERR_GALFIT_CHEB_G', u'YERR_GALFIT_CHEB_I', u'YERR_GALFIT_CHEB_Z', u'YERR_GALFIT_CHEB_Y', ...], dtype='object')