假设有以下数据框:
>>> df=pd.DataFrame({'category':['a','a','b','b'],
... 'var1':np.random.randint(0,100,4),
... 'var2':np.random.randint(0,100,4),
... 'weights':np.random.randint(0,10,4)})
>>> df
category var1 var2 weights
0 a 37 36 7
1 a 47 20 1
2 b 33 7 6
3 b 16 6 8
我可以按如下方式计算'var1'的加权平均值:
>>> Grouped=df.groupby('category')
>>> GetWeightAvg=lambda g: np.average(g['var1'], weights=g['weights'])
>>> Grouped.apply(GetWeightAvg)
category
a 38.250000
b 23.285714
dtype: float64
然而,我想知道是否有一种方法可以编写我的函数并将其应用于我的分组对象,以便在应用它时,可以指定要计算的列(或两列)。而不是在我的函数中写入'var1',我希望能够在应用函数时指定。
就像我可以这样获取两个列的未加权平均值:
>>> Grouped[['var1','var2']].mean()
var1 var2
category
a 42.0 28.0
b 24.5 6.5
我在想是否有一种并行的方法来使用加权平均值。