在多索引上应用熊猫分组聚合



我有一只熊猫DataFrame

                    A
   foo   one        3
         two        2
         three      4
   bar   one        1
         two        5
         three      2

我想根据第一个索引级别中所有行的总和,为每行添加一个具有相对值的列。foo 中所有值的总和为 3+2+4=9,因此第一行的相对值为 3/9 = 0.33。

生成的DataFrame如下所示:

                    A    rel
   foo   one        3     0.33
         two        2     0.22
         three      4     0.44
   bar   one        1     0.125
         two        5     0.625
         three      2     0.25

我已经尝试在DataFrame上使用 groupby,但我只能弄清楚如何将方法应用于一个 groupby 维度。

您可以将

groupbytransform sum一起使用:

df['rel'] = df.A / df.groupby(level=0)['A'].transform(sum)
print df
           A       rel
foo one    3  0.333333
    two    2  0.222222
    three  4  0.444444
bar one    1  0.125000
    two    5  0.625000
    three  2  0.250000

最新更新