我想执行窗口函数(具体移动平均值),但是要在数据帧的所有列上执行。
我可以这样做
df.select([func.avg(df[col]).over(windowSpec).alias(col) for col in df.columns])
但是我担心这不是很有效率。有没有更好的方法呢?
答案 0 :(得分:0)
一个更好的替代方法是创建一个新的df,在其中您可以对Window函数中的列进行分组,并对其余列应用平均值,然后进行左连接。对于将df溢出到磁盘(或无法持久存储在内存中)的大型数据帧,这绝对是最佳选择。