2d numpy数组到3列DataFrame

时间:2018-04-28 17:24:12

标签: python-3.x pandas numpy

我有一个2d numpy矩阵,例如:

arr = np.arange(0, 12).reshape(3,4)

我想进入一个DataFrame,这样:

X Y Z
0 0 0
0 1 1
0 2 2
0 3 3
1 0 4
1 1 5
1 2 6
1 3 7
2 0 8
2 1 9
2 2 10
2 3 11

我如何(有效地)这样做?

1 个答案:

答案 0 :(得分:0)

您可以使用numpy个功能:

x1 =np.repeat(np.arange(arr.shape[0]), len(arr.flatten())/len(np.arange(arr.shape[0])))
x2 =np.tile(np.arange(arr.shape[1]), int(len(arr.flatten())/len(np.arange(arr.shape[1]))))
x3= arr.flatten()

pd.DataFrame(np.array([x1,x2,x3]).T, columns=['X','Y','Z'])

输出

    X   Y   Z
0   0   0   0
1   0   1   1
2   0   2   2
3   0   3   3
4   1   0   4
5   1   1   5
6   1   2   6
7   1   3   7
8   2   0   8
9   2   1   9
10  2   2   10
11  2   3   11