Normalizar DataFrame por grupo
Digamos que eu tenha alguns dados gerados da seguinte maneira:
N = 20
m = 3
data = np.random.normal(size=(N,m)) + np.random.normal(size=(N,m))**3
e então eu crio alguma variável de categorização:
indx = np.random.randint(0,3,size=N).astype(np.int32)
e gere um DataFrame:
import pandas as pd
df = pd.DataFrame(np.hstack((data, indx[:,None])),
columns=['a%s' % k for k in range(m)] + [ 'indx'])
Posso obter o valor médio, por grupo, como:
df.groubpy('indx').mean()
O que não tenho certeza de como fazer é subtrair a média de cada grupo, por coluna nos dados originais, para que os dados em cada coluna sejam normalizados pela média dentro do grupo. Todas as sugestões serão apreciadas.