Python 如何求级数中的加权平均数?

Python 如何求级数中的加权平均数?,python,pandas,dataframe,series,Python,Pandas,Dataframe,Series,我使用group by实现了以下系列: Job Salary Teacher 15 3 23 4 28 5 Doctor 10 3 35 2 40 1 如何计算教师或医生的平均工资 教师的平均工资计算公式是:(15*3)+(23*4)+(28*5)/(3+4+5)为了简单起见,我认为

我使用group by实现了以下系列:

Job         Salary    
Teacher     15       3
            23       4
            28       5

Doctor      10       3 
            35       2
            40       1
如何计算教师或医生的平均工资


教师的平均工资计算公式是:(15*3)+(23*4)+(28*5)/(3+4+5)

为了简单起见,我认为在第一步创建数据框,乘法列,聚合
sum
和最后除以列,如:

df1 = df.reset_index(name='count')

df1['new'] = df1['Salary'].mul(df1['count'])

df1 = df1.groupby('Job').sum()

df2 = df1['new'].div(df1['count']).reset_index(name='out')
print (df2)
       Job        out
0   Doctor  23.333333
1  Teacher  23.083333
如@Mark Wang所述,可使用
np.平均值
如:

df2 =  df.reset_index(name='count').groupby('Job').apply(lambda x: np.average(x['Salary'], weights=x['count'])).reset_index(name='out')
print(df2)
       Job        out
0   Doctor  23.333333
1  Teacher  23.083333

这里有一个
np.average
,它不同于
np.mean
,因为它需要权重。这就是scikit learn实现其示例权重的方式。我认为您提供的算术表达式不正确。你是说加权平均数
(15*3+23*4+28*5)/(3+4+5)
?是的,对不起,我将更新我投票的问题以结束这个问题,因为…这只是一个普通的数学问题。