Numpy数组到X Y坐标的Pandas数据框架

时间:2017-05-21 22:21:12

标签: python arrays numpy

我有一个二维numpy数组:

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])

我如何将其转换为pandas数据框,将该坐标处的x坐标,y坐标和相应的数组值转换为pandas数据框,如下所示:

x   y    val
0   0    1
0   1    4
0   2    7
1   0    2
1   1    5
1   2    8
...

2 个答案:

答案 0 :(得分:6)

使用堆栈和重置索引:

df = pd.DataFrame(arr).stack().rename_axis(['y', 'x']).reset_index(name='val')
df

Out: 
   y  x  val
0  0  0    1
1  0  1    2
2  0  2    3
3  1  0    4
4  1  1    5
5  1  2    6
6  2  0    7
7  2  1    8
8  2  2    9

如果订购很重要:

df.sort_values(['x', 'y'])[['x', 'y', 'val']].reset_index(drop=True)
Out: 
   x  y  val
0  0  0    1
1  0  1    4
2  0  2    7
3  1  0    2
4  1  1    5
5  1  2    8
6  2  0    3
7  2  1    6
8  2  2    9

答案 1 :(得分:1)

这是一个NumPy方法 -

>>> arr
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> shp = arr.shape
>>> r,c = np.indices(shp)
>>> pd.DataFrame(np.c_[r.ravel(), c.ravel(), arr.ravel('F')], \
                                columns=((['x','y','val'])))

   x  y  val
0  0  0    1
1  0  1    4
2  0  2    7
3  1  0    2
4  1  1    5
5  1  2    8
6  2  0    3
7  2  1    6
8  2  2    9