Итерирование через мультииндексный DataFrame Pandas для нормализации по определенному уровню индекса - PullRequest
0 голосов
/ 30 мая 2018

У меня есть мультииндексированный DataFrame, и я хочу нормализовать определенные наборы столбцов («второго» уровня индекса) по их наибольшему значению:

       Level1                                  Level2
        Thing1                Thing2               Thing1   
       Norm1    Norm2      Norm1    Norm2      Norm1    Norm1    
0      0.3309   0.5030     1.4494   0.7677     0.2134   0.1235    
1      0.1708   0.4845     1.2636   0.8755     0.2419   0.1350  
2      0.2272   0.3414     1.2890   0.7636     0.1295   0.0788    
3      0.2249   0.3225     1.0368   0.7391     0.1416   0.1267  
4      0.2268   0.4230     1.7703   1.0730     0.0198   0.0294  
5      0.2078   0.3600     1.7819   0.9052     0.0253   0.0254  
6      0.1034   0.1781     3.2156   1.5434     0.1084   0.0452  
7      0.0823   0.1574     2.2911   1.3434     0.0440   0.0617 
8      0.5260   0.7510     3.1626   2.2208     0.1420   0.0583 
9      0.5503   0.6921     3.2830   2.0311     0.0771   0.0677
....

Я хочу нормализовать норму 1 и норму 2 с помощьюмаксимум каждого столбца в каждой вещи.Я хочу сохранить имена столбцов и индексов.Есть ли хороший способ повторить это?

1 Ответ

0 голосов
/ 30 мая 2018

Я считаю, что нужно max по первому и второму уровням MultiIndex:

df = df.max(level=[0,1], axis=1)

Альтернативное решение является совокупным max:

df = df.groupby(level=[0,1], axis=1).max()

print (df)
   Level1          Level2
   Thing1  Thing2  Thing1
0  0.5030  1.4494  0.2134
1  0.4845  1.2636  0.2419
2  0.3414  1.2890  0.1295
3  0.3225  1.0368  0.1416
4  0.4230  1.7703  0.0294
5  0.3600  1.7819  0.0254
6  0.1781  3.2156  0.1084
7  0.1574  2.2911  0.0617
8  0.7510  3.1626  0.1420
9  0.6921  3.2830  0.0771
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...