【问题标题】:Apply pandas groupby aggregation on multiindex在多索引上应用 pandas groupby 聚合
【发布时间】:2016-01-23 02:52:14
【问题描述】:

我有一只熊猫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 维度。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 2021-11-01
      • 2019-10-12
      • 2018-02-03
      • 2017-08-27
      • 2014-11-23
      相关资源
      最近更新 更多