среднее значение одного столбца в мультииндексном фрейме данных в pandas - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть многоиндексный фрейм данных, похожий на этот.

arrays = [np.array(['bar', 'bar', 'bar','baz', 'baz', 'baz', 'foo', 'foo', 'foo']),
      np.array(['one', 'two', 'three', 'one', 'two', 'three','one', 'two','three'])]
s = pd.Series(np.random.randn(9), index=arrays)
df = pd.DataFrame(np.random.randn(9, 2), index=arrays,columns=['C1','C2'])
df

Я хочу добавить в конец кадра данных новый столбец, который будет группировать по уровню = 0 ('bar', 'baz', 'foo') и усреднять числа в столбце C2 для эти группы. Я хотел бы показать одно и то же среднее число для каждой из 3 отдельных строк на уровне = 0 в одном сценарии (или, альтернативно, в верхней строке для каждого уровня = 0) позиция

1 Ответ

0 голосов
/ 04 апреля 2020

Попробуйте с transform mean

df.groupby(level=0).transform('mean')
                 C1        C2
bar one    0.473968 -0.454709
    two    0.473968 -0.454709
    three  0.473968 -0.454709
baz one    0.731266 -0.437691
    two    0.731266 -0.437691
    three  0.731266 -0.437691
foo one    0.061087 -0.326533
    two    0.061087 -0.326533
    three  0.061087 -0.326533

Обновление

df['C3']=df.groupby(level=0).C2.transform('mean')
...