如何找到系列中的加权平均值?
How to find weighted mean in 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)
为了简单起见,我认为在第一步中创建 DataFrame,乘以列,聚合 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.average
like:
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
我有这样的系列,是我使用 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)
为了简单起见,我认为在第一步中创建 DataFrame,乘以列,聚合 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.average
like:
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