Tah*_*her 4 python numpy pandas tensorflow
考虑一个像这样的数据框:
df = pd.DataFrame({'r': [1, 1, 2, 2], 'c': [0, 2, 1, 2], 'v': [2, 4, 3, 5],})
Run Code Online (Sandbox Code Playgroud)
我想提取一个 numpy 数组或张量,将 'r' 和 'c' 作为矩阵的行和列索引。所以相应的矩阵将是这样的:
arr = array([[0, 0, 0],
[2, 0, 4],
[0, 3, 5]])
Run Code Online (Sandbox Code Playgroud)
那么有没有一种体面的方法来做到这一点,或者我必须遍历每个 df 行?从像 arr 这样的矩阵中提取数据帧 df 怎么样?
要创建一个numpy从数据帧阵列考虑r并c作为row和column索引:
r, c, v = df.T.values
arr = np.zeros((r.max() + 1, c.max() + 1))
arr[r, c] = v
Run Code Online (Sandbox Code Playgroud)
>>> arr
array([[0., 0., 0.],
[2., 0., 4.],
[0., 3., 5.]])
Run Code Online (Sandbox Code Playgroud)
要从numpy上面的数组重新创建数据帧,您可以使用np.nonzero获取非零元素的索引:
r, c = np.nonzero(arr)
df = pd.DataFrame({'r': r, 'c': c, 'v': arr[r, c]})
Run Code Online (Sandbox Code Playgroud)
>>> df
r c v
0 1 0 2.0
1 1 2 4.0
2 2 1 3.0
3 2 2 5.0
Run Code Online (Sandbox Code Playgroud)