如何用几个numpy 1d数组创建一个pandas DataFrame?

问题描述:

我创建了一些np.arrays与他们做一些计算。 (全部具有相同的大小[100,1]) 现在我想创建一个熊猫数据框,并且每个数组都应该是该DF的一列。 数组的名称应该是DataFrame的标题。如何用几个numpy 1d数组创建一个pandas DataFrame?

在Matlab中我会做很容易像:

表=表(数组1,数组2,ARRAY3,...);

我该怎么在Python中做到这一点?

在此先感谢!

+0

啊对不起,我误解你的问题。您需要重新设计阵列以使用我提供的语法。 –

比方说,这些都是你的阵列:

arr1, arr2, arr3 = np.zeros((3, 100, 1)) 

arr1.shape 
Out: (100, 1) 

您可以使用hstack来堆叠起来,并通过所产生的二维阵列数据框的构造函数:

df = pd.DataFrame(np.hstack((arr1, arr2, arr3))) 

df.head() 
Out: 
    0 1 2 
0 0.0 0.0 0.0 
1 0.0 0.0 0.0 
2 0.0 0.0 0.0 
3 0.0 0.0 0.0 
4 0.0 0.0 0.0 

或名称的列作为arr1arr2,...:

df = pd.DataFrame(np.hstack((arr1, arr2, arr3)), 
        columns=['arr{}'.format(i+1) for i in range(3)]) 

这给与numpy.concatenate

df.head() 
Out: 
    arr1 arr2 arr3 
0 0.0 0.0 0.0 
1 0.0 0.0 0.0 
2 0.0 0.0 0.0 
3 0.0 0.0 0.0 
4 0.0 0.0 0.0 
+0

谢谢,那很好用!头部是否可以获取数组名称而不是0,1,2? – laurenz

+0

在Python中,对象的名称只是引用。一个对象可能有多个名称。因为这样就没有简单的方法来获取变量的名字,比如'arr1'。你可以迭代'globals()'中的名字,但不建议这样做。你的变量名是否有结构?如果是这样,则很容易建立名称而不是提取它们。 (像arr1,arr2,arr3 ...) – ayhan

+0

谢谢。不,他们是真名。所以我想我真的需要在Dataframe中重命名它们。 – laurenz

解决方案二维数组和DataFrame构造:

df = pd.DataFrame(np.concatenate([arr1, arr2, arr3], axis=1), columns= ['a','b','c'])