我有一个带有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
有人可以看到这样做的好方法吗?
答案 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