Construya eficientemente Pandas DataFrame a partir de una gran lista de tuplas / filas

He heredado un archivo de datos guardado en el formato Stata .dta. Puedo cargarlo con la función scikits.statsmodels genfromdta() . Esto coloca mis datos en una matriz NumPy 1-dimensional, donde cada entrada es una fila de datos, almacenada en un 24-tuple.

 In [2]: st_time = time.time(); initialload = sm.iolib.genfromdta("/home/myfile.dta"); ed_time = time.time(); print (ed_time - st_time) 666.523324013 In [3]: type(initialload) Out[3]: numpy.ndarray In [4]: initialload.shape Out[4]: (4809584,) In [5]: initialload[0] Out[5]: (19901130.0, 289.0, 1990.0, 12.0, 19901231.0, 18.0, 40301000.0, 'GB', 18242.0, -2.368063, 1.0, 1.7783716290878204, 4379.355, 66.17669677734375, -999.0, -999.0, -0.60000002, -999.0, -999.0, -999.0, -999.0, -999.0, 0.2, 371.0) 

Tengo curiosidad si hay una manera eficiente de organizar esto en un DataFrame de Pandas. Por lo que he leído, crear un DataFrame fila por fila parece bastante ineficiente … pero ¿cuáles son mis opciones?

He escrito un primer paso bastante lento que solo lee cada tupla como un DataFrame de una sola fila y lo agrega. Solo me pregunto si algo se sabe que es mejor.

 pandas.DataFrame(initialload, columns=list_of_column_names) 

La versión 0.12 de pandas en adelante debe admitir la carga del formato Stata directamente ( Referencia ).

De la documentación:

La función de nivel superior read_stata leerá un archivo de formato dta y devolverá un DataFrame: la clase StataReader leerá el encabezado del archivo dta dado en la inicialización. Su método data () leerá las observaciones, convirtiéndolas en un DataFrame que se devuelve:

  pd.read_stata('stata.dta')