python - 将数据帧转换为具有 3d 形状 (x,y,z) 的数组
问题描述
我有一个如下的 DF,我想更改它的格式,以便我得到一个具有以下形状 (3,Y,2) 的数组,其中 3 表示有 3 个标签(ab 和 c),U 是行数对于每个标签(因为它们彼此之间有所不同,我没有指定它,它对我来说并不重要),并且 2 表示有 2 个特征/列(data_1 和 data_2)[[[1.09,1][5.0,3],[2.1,2][2.0,3],[1.9,4]]]
。据我了解,它将是 3d 数组。我想将输出提供给 lstm 模型
label data_1 data_2
a 1.09 1
b 2.1 2
a 5.0 3
b 2.0 3
c 1.9 4
解决方案
label
如果您对其进行排序,则已作为您的索引给出..
df = df.sort_index(ascending=True)
然后...
df.to_numpy()
array([[1.09, 1. ],
[5. , 3. ],
[2.1 , 2. ],
[2. , 3. ],
[1.9 , 4. ]])
例子:
df = pd.DataFrame({'label': {0: 'a', 1: 'b', 2: 'a', 3: 'b', 4: 'c'},
'data_1': {0: 1.09, 1: 2.1, 2: 5.0, 3: 2.0, 4: 1.9},
'data_2': {0: 1, 1: 2, 2: 3, 3: 3, 4: 4}})
df = df.set_index('label')
data_1 data_2
label
a 1.09 1
b 2.10 2
a 5.00 3
b 2.00 3
c 1.90 4
df = df.sort_index(ascending=True)
print(df.to_numpy())
[[1.09 1. ]
[5. 3. ]
[2.1 2. ]
[2. 3. ]
[1.9 4. ]]