所以,我有一个类型的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数据帧没有索引。