计算数据框中某些数字集的平均值(Pandas,Python3)

时间:2015-10-12 19:20:26

标签: python pandas

我有一个数据框:

    Group    Importance
    1          100%
    1          100%
    1          50%  
    2          75%
    2          50%

我想标准化重要性,因此对于每个组,组合重要性等于100%(例如,每个单独的单元格除以特定组中其余数字的总和)

例如:

  Group    Importance      Weight
    1          100%        100%/Sum(100%+100%+50%) = 40%
    1          100%        100%/Sum(100%+100%+50%) = 40%
    1          50%         50%/Sum(100%+100%+50%)  = 20%

因此,我正在努力获得我的输出:

  Group    Importance      Weight
    1          100%        40%
    1          100%        40%
    1          50%         20%
    2          100%        60%
    2          50%         40%

我的第一个想法是尝试在groupby中利用for循环的强大功能,但非常错误有点像:

for z in df.groupby(['Group']):
    df.apply(lambda row: (row[1]/df['Importance'])

1 个答案:

答案 0 :(得分:2)

假设数据框中的值是数字(例如.50 vs '50%'):

df['Weight'] = df.groupby('Group')['Importance'].transform(lambda x: x / sum(x))

>>> df
   Group  Importance  Weight
0      1        1.00     0.4
1      1        1.00     0.4
2      1        0.50     0.2
3      2        0.75     0.6
4      2        0.50     0.4