Pyspark中的Groupby和Standardise值



所以,我有一个类型的Pyspark数据帧

A 12
B 10
A 1
B 0
B 1
A 6

您可以使用窗口函数计算每组中的平均值和stddev:

from pyspark.sql import functions as F, Window
df2 = df.withColumn(
'Value', 
(F.col('Value') - F.mean('Value').over(Window.partitionBy('Group'))) / 
F.stddev_pop('Value').over(Window.partitionBy('Group'))
)
df2.show()
+-----+--------------------+
|Group|               Value|
+-----+--------------------+
|    B|  1.4083737016560922|
|    B| -0.8153742483272112|
|    B| -0.5929994533288808|
|    A|  1.2601238383238722|
|    A| -1.1859989066577619|
|    A|-0.07412493166611006|
+-----+--------------------+

请注意,结果的顺序将被随机化,因为Spark数据帧没有索引。

最新更新