迭代通过Multiindex Pandas DataFrame按特定索引级别进行规范化

时间:2018-05-30 15:37:47

标签: python pandas

我有一个多索引的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
....

我希望将Norm 1和Norm 2标准化为每个Thing中任一列的最大值。 我想保留列和索引名称。是否有一种很好的方法来迭代这个?

1 个答案:

答案 0 :(得分:1)

我认为MultiIndex的第一和第二级需要max

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