比如说对df['id']进行groupby,df['value']是数值,df['weight']是权重,怎么对pyspark dataframe对id进行加权平均,有没有类似这样的功能
df.groupby('id').agg(weight_avg('value', 'weight'))
新上手pyspark,不大熟悉
1个回答
并没有直接做加权平均的函数,你可以自己写出表达式来
from pyspark.sql import functions as F
df = df.groupby('id')\
.agg(F.sum(F.col('value') * F.col('weight'))/F.sum(F.col('weight'))\
.alias('w_mean'))
你也可以自己按照上面的式子写udf
SofaSofa数据科学社区DS面试题库 DS面经