熊猫dataframe列到分层数据结构?

时间:2019-12-05 15:05:31

标签: python pandas

我有一个带有多个列的pandas数据框。有些列可以按层次分组。我想利用这种可分组性将列结构转变为用于机器学习环境的分层结构。

示例:

我的熊猫框架有runobj_iddata列,其外观如下:

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]
        ]
      ]

有没有一种简单的方法可以进行这种转换?

1 个答案:

答案 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]
        ]
    ]
]
相关问题