将带索引的numpy数组转换为pandas datafram

2024-04-25 07:29:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个numpy数组,我想用python ggplot's tile打印它。为此,我需要一个包含x,y,value列的数据帧。如何有效地将numpy数组转换成这样的数据帧。请考虑一下,我想要的数据格式是稀疏的,但是我想要一个常规的数据帧。我尝试过使用scipy稀疏数据结构,比如in Convert sparse matrix (csc_matrix) to pandas dataframe,但是转换速度太慢,而且内存不足:我的内存已经用完了。在

为了澄清我想要什么:

我从一个纽比阵列开始

array([[ 1,  3,  7],
       [ 4,  9,  8]])

我想以数据帧结束

^{pr2}$

Tags: 数据innumpy数据结构convertvaluescipy数组
1条回答
网友
1楼 · 发布于 2024-04-25 07:29:06
arr = np.array([[1, 3, 7],
                [4, 9, 8]])

df = pd.DataFrame(np.hstack((np.indices(arr.shape).reshape(2, arr.size).T,\
                    arr.reshape(-1, 1))), columns=['x', 'y', 'value'])
print(df)

   x  y  value
0  0  0      1
1  0  1      3
2  0  2      7
3  1  0      4
4  1  1      9
5  1  2      8

您还可以考虑使用this应答中使用的函数,作为上述解决方案中np.indices的加速:

^{pr2}$

性能

arr = np.random.randn(1000, 1000)

%timeit df = pd.DataFrame(np.hstack((np.indices(arr.shape).reshape(2, arr.size).T,\
                         arr.reshape(-1, 1))), columns=['x', 'y', 'value'])
100 loops, best of 3: 15.3 ms per loop

%timeit pd.DataFrame(indices_merged_arr(array), columns=['x', 'y', 'value'])
1000 loops, best of 3: 229 µs per loop

相关问题 更多 >

    热门问题