[英]Using pyspark groupBy with a custom function in agg
我想通過我的 spark df 與自定義 agg function 進行分組:
def gini(list_of_values):
sth is processing here
return number output
我想得到這樣的東西:
df.groupby('activity')['mean_event_duration_in_hours].agg(gini)
你能幫我解決這個問題嗎?
您可以像這樣創建一個udf
:
import pyspark.sql.functions as F
from pyspark.sql.types import FloatType
def gini(list_of_values):
# sth is processing here
return number_output
udf_gini = F.udf(gini, FloatType())
df.groupby('activity')\
.agg(F.collect_list("mean_event_duration_in_hours").alias("event_duration_list"))\
.withColumn("gini", udf_gini(F.col("event_duration_list")))
或者像這樣將 gini 定義為 UDF:
@udf(returnType=FloatType())
def gini(list_of_values):
# sth is processing here
return number_output
df.groupby('activity')\
.agg(F.collect_list("mean_event_duration_in_hours").alias("event_duration_list"))\
.withColumn("gini", gini(F.col("event_duration_list")))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.