我有一个带有多个列的pandas数据框。有些列可以按层次分组。我想利用这种可分组性将列结构转变为用于机器学习环境的分层结构。
示例:
我的熊猫框架有run
,obj_id
和data
列,其外观如下:
Index run obj_id data1 data2
0 0 0 1.3134 3.4943
1 0 0 2.3311 5.4434
2 1 0 1.3345 6.9942
3 1 0 3.4422 3.5353
4 0 1 4.2233 0.3112
,依此类推。我想在这里首先为每个obj_id
训练一个单独的模型。然后,我想将run
变成批处理,也就是说,每个run
应该被视为一个批处理。然后data
列应为功能。
结果可能看起来像这样:
X = [ # obj_id: model
[ # run: batch
[ # data_: features
[1.3134, 3.4943],
[2.3311, 5.4434]
],
[
[1.3345, 6.9942],
[3.4422, 3.5353]
]
]
有没有一种简单的方法可以进行这种转换?
答案 0 :(得分:1)
不是最佳解决方案,但您可以这样做:
(df.groupby('obj_id')
.apply(lambda x: x.groupby('run')['data1','data2']
.apply(lambda y: y.values.tolist() )
.to_list()
)
.to_list()
)
输出:
[
[
[
[1.3134, 3.4943],
[2.3311, 5.4434]
],
[
[1.3345, 6.9942],
[3.4422, 3.5353]
]
],
[
[
[4.2233, 0.3112]
]
]
]