我的pyspark dataframe中有四列:
'drivers','cars','topSpeeds','dates'
假设每个驾驶员在不同的日期都使用不同的汽车实现了不同的最高速度,并且不同的汽车在不同日期的不同驱动程序都达到了不同的最高速度。
我可以在所有日期上为每辆车的驾驶员平均驾驶员的平均速度,如下所示:
df.groupBy("drivers").mean()
我认为这无效,而没有指定我通过Topspeed进行平均,因为Topspeed是唯一具有数值的列。
同样,我可以在所有日期上获得每个驾驶员的最高速度的平均速度:
df.groupBy("cars").mean()
现在,我想比较每个驾驶员在每个日期内的平均值那个特定的车。
您能想到一种在Pyspark中制作这张桌子的方法吗?
只是做这个
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'))