考虑一下数据格式,比如:
df = pd.DataFrame({'r': [1, 1, 2, 2], 'c': [0, 2, 1, 2], 'v': [2, 4, 3, 5],})
我想提取一个numpy数组或张量,将'r‘和'c’作为矩阵的行和列索引。因此相应的矩阵将类似于:
arr = array([[0, 0, 0],
[2, 0, 4],
[0, 3, 5]])
那么,是否有一种很好的方法来做到这一点,或者我必须循环遍历每个df行?从像arr这样的矩阵中提取数据基df怎么样?
发布于 2021-03-07 00:22:10
要从dataframe创建一个numpy
数组,将r
和c
作为row
和column
索引:
r, c, v = df.T.values
arr = np.zeros((r.max() + 1, c.max() + 1))
arr[r, c] = v
>>> arr
array([[0., 0., 0.],
[2., 0., 4.],
[0., 3., 5.]])
要像上面这样从numpy
数组重新创建数据,可以使用获取非零元素的索引:
r, c = np.nonzero(arr)
df = pd.DataFrame({'r': r, 'c': c, 'v': arr[r, c]})
>>> df
r c v
0 1 0 2.0
1 1 2 4.0
2 2 1 3.0
3 2 2 5.0
https://stackoverflow.com/questions/66514435
复制相似问题