Как объединить некоторые уровни в глубоко вложенную `groupby` в pandas?

#pandas

#pandas

Вопрос:

Я выполняю упражнение наhttps://repl.it/@freeCodeCamp/fcc-medical-data-visualizer , и проблема groupby застряла у меня:

Теперь я получаю дерево типа nested-level groupby , я хочу получить общее количество некоторых подуровней:

 >>> m.groupby(['cardio', 'cholesterol', 'gluc', 'smoke', 'alco', 'active', 'overweight']).size()
cardio  cholesterol  gluc  smoke  alco  active  overweight
0       0            0     0      0     0       0              36400
                                        1       0             158936
                                  1     0       0                752
                                        1       0               4056
                           1      0     0       0               1960
                                        1       0              11640
                                  1     0       0                744
                                        1       0               5544
                     1     0      0     0       0               2440
                                        1       0              10104
                                  1     0       0                 88
                                        1       0                456
                           1      0     0       0                152
                                        1       0                896
                                  1     0       0                 40
                                        1       0                432
        1            0     0      0     0       0               4056
                                        1       0              18792
                                  1     0       0                184
                                        1       0               1144
                           1      0     0       0                320
                                        1       0               1584
                                  1     0       0                152
                                        1       0                888
                     1     0      0     0       0               3400
                                        1       0              12832
                                  1     0       0                112
                                        1       0                496
                           1      0     0       0                152
                                        1       0                976
                                                               ...
1       0            0     0      1     0       0                552
                                        1       0               2968
                           1      0     0       0               1792
                                        1       0               7536
                                  1     0       0                704
                                        1       0               2792
                     1     0      0     0       0               2840
                                        1       0              10200
                                  1     0       0                 96
                                        1       0                488
                           1      0     0       0                216
                                        1       0                824
                                  1     0       0                 72
                                        1       0                360
        1            0     0      0     0       0               9680
                                        1       0              41152
                                  1     0       0                352
                                        1       0               1992
                           1      0     0       0                792
                                        1       0               3536
                                  1     0       0                256
                                        1       0               1576
                     1     0      0     0       0               6688
                                        1       0              24848
                                  1     0       0                240
                                        1       0               1304
                           1      0     0       0                416
                                        1       0               1728
                                  1     0       0                216
                                        1       0                616
dtype: int64
  

Например, я хочу суммировать количество cholesterol , gluc , smoke alco , active и cardio->overweight , чтобы получить 0 подуровень и общее количество 1 и cardio по отношению к overweight и и, что дало бы мне что-то вроде:

 cardio  overweight
0       0          88888
        1          99999
1       0          77777
        1          66666
  

Ответ №1:

Проверьте sum и знайте свой level

 df = df.sum(level = [0, 6])