熊猫按索引平均值划分列

时间:2019-03-28 16:08:57

标签: pandas

我有一个带有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,我将2乘以0A 1A 2A,因为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    

有人可以看到这样做的好方法吗?

1 个答案:

答案 0 :(得分: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