大熊猫按指数平均值划分

问题描述 投票:1回答:1

我有一个带有2个索引的pandas数据帧,我想将每个值除以第二个索引(A,B)的列平均值。

例如输入df

       col1    col2
0 A     1      20
1 A     2      10
2 A     1      10
4 A     4      5
5 B     6      15
6 B     2      50

所以对于col1,我会将0A 1A 2A乘以2,因为1,2,1,4的平均值为2。

       col1   
0 A     0.5     
1 A     1       
2 A     0.5     
4 A     2      
5 B     1.5     
6 B     0.5    

任何人都可以看到这样做的好方法吗?

pandas
1个回答
3
投票

IIUC,尝试:

df.groupby(level=1)['col1'].apply(lambda x: x/x.mean())

没有申请更好的是:

df.col1/df.groupby(level=1)['col1'].transform('mean')

产量

0  A    0.5
1  A    1.0
2  A    0.5
4  A    2.0
5  B    1.5
6  B    0.5
© www.soinside.com 2019 - 2024. All rights reserved.