Давайте предположим, что у меня есть некоторые данные, полученные следующим образом:Нормализовать DataFrame группы
N = 20
m = 3
data = np.random.normal(size=(N,m)) + np.random.normal(size=(N,m))**3
, а затем создать некоторые категоризации переменный:
indx = np.random.randint(0,3,size=N).astype(np.int32)
и генерировать DataFrame:
import pandas as pd
df = pd.DataFrame(np.hstack((data, indx[:,None])),
columns=['a%s' % k for k in range(m)] + [ 'indx'])
Я могу получить среднее значение для каждой группы как:
df.groubpy('indx').mean()
То, что я не знаю, как это сделать, - это вычесть среднее значение для каждой группы за каждый столбец в исходных данных, чтобы данные в каждом столбце были нормированы средним значением внутри группы. Мы ценим любые предложения.
Высоких. Я просто изучаю Панды, и я еще не наткнулся на «трансформировать». Это довольно элегантно и немного быстрее, чем решение Майка. – JoshAdel