从Numpy数组创build一个Pandas DataFrame:如何指定索引列和列标题?

我有一个由列表列表组成的Numpy数组,表示一个具有行标签和列名称的二维数组,如下所示:

data = array([['','Col1','Col2'],['Row1',1,2],['Row2',3,4]]) 

我希望得到的DataFrame有Row1和Row2作为索引值,Col1,Col2作为标题值

我可以指定如下索引:

 df = pd.DataFrame(data,index=data[:,0]), 

但是我不确定如何最好地分配列标题。

您需要为DataFrame构造函数指定dataindexcolumns ,如下所示:

 >>> pd.DataFrame(data=data[1:,1:], # values ... index=data[1:,0], # 1st column as index ... columns=data[0,1:]) # 1st row as the column names 

编辑 :如在@joris注释中,您可能需要将上面的内容更改为np.int_(data[1:,1:])以具有正确的数据types。

我同意Joris; 看起来你应该以不同的方式做这个,就像numpylogging数组一样 。 从这个伟大的答案修改“选项2”,你可以这样做:

 import pandas import numpy dtype = [('Col1','int32'), ('Col2','float32'), ('Col3','float32')] values = numpy.zeros(20, dtype=dtype) index = ['Row'+str(i) for i in range(1, len(values)+1)] df = pandas.DataFrame(values, index=index)