Pandas 按索引平均值划分列

Pandas 按索引平均值划分列,pandas,Pandas,我有一个包含2个索引的熊猫数据帧,我想用第二个索引(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

我有一个包含2个索引的熊猫数据帧,我想用第二个索引(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    
有人能想出一个好办法吗

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