熊猫多索引数据框中的一栏的平均值

时间:2020-04-04 00:54:44

标签: python pandas multi-level

我有一个与此类似的多索引数据框。

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列中的数字求平均值。我想在一种情况下(或在每个级别= 0的顶行)显示3个独立行中的每一个的相同平均数

1 个答案:

答案 0 :(得分:0)

尝试使用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')