我的PySpark数据框中有四列:
'drivers','cars','topSpeeds','dates'
假设每个驾驶员在不同日期使用不同的汽车达到不同的最高速度,并且不同汽车在不同日期使用不同的驾驶员获得不同的最高速度。
我可以得出所有日期中每辆车的驾驶员最高时速的平均值:
df.groupBy("drivers").mean()
我认为这种方法无需指定我按topSpeed进行平均,因为topSpeed是唯一具有数值的列。
类似地,我可以得到每个日期的每个驾驶员的最高车速的平均值:
df.groupBy("cars").mean()
现在,我想比较每个日期的每个驾驶员与每个汽车的平均值,因此我想要一个表,其中驾驶员是列,汽车是行,每个表项是该驾驶员的平均值,那辆特定的汽车。
您能想到一种在PySpark中制作这张桌子的方法吗?
答案 0 :(得分:0)
只需这样做
import pyspark.sql.functions as F
df_gb = df.groupBy('drivers', 'cars').agg(F.mean('topSpeeds').alias('avg_topSpeeds'))
df_out = df_gb.groupBy('cars').pivot('drivers').agg(F.max('avg_topSpeeds'))