我有一个多索引的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中任一列的最大值。 我想保留列和索引名称。是否有一种很好的方法来迭代这个?
答案 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