Python 从元组/行的大列表高效地构造数据帧

Python 从元组/行的大列表高效地构造数据帧,python,tuples,pandas,dta,Python,Tuples,Pandas,Dta,我继承了一个以Stata.dta格式保存的数据文件。我可以使用scikits.statsmodelsgenfromdta()函数加载它。这将我的数据放入一个一维NumPy数组,其中每个条目都是一行数据,存储在一个24元组中 In [2]: st_time = time.time(); initialload = sm.iolib.genfromdta("/home/myfile.dta"); ed_time = time.time(); print (ed_time - st_time) 666

我继承了一个以Stata.dta格式保存的数据文件。我可以使用
scikits.statsmodels
genfromdta()
函数加载它。这将我的数据放入一个一维NumPy数组,其中每个条目都是一行数据,存储在一个24元组中

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)
我很好奇是否有一种有效的方法将其安排到熊猫数据帧中。据我所知,逐行构建数据帧似乎效率很低。。。但我的选择是什么


我编写了一个非常慢的第一个过程,它只是将每个元组作为一个单行数据帧读取并附加它。只是想知道是否还有其他更好的版本。

0.12版以后的pandas应支持直接加载Stata格式()

pandas.DataFrame(initialload, columns=list_of_column_names)
从文件中:

顶级函数read_stata将读取dta格式文件并返回数据帧:类statReader将在初始化时读取给定dta文件的头。其方法data()将读取观察值,并将其转换为返回的数据帧:


pandas.DataFrame(initialload)
是否返回您正在搜索的内容?哇。几乎。它搞错了一些列名,但我可以很容易地修复它。疯子谢谢你,即使在读了熊猫的文档之后,我也不会想到这一点。对不起,这太简单了。
 pd.read_stata('stata.dta')