Все, что вам нужно, это окно и применение функции mean :
import pyspark.sql.functions as F
from pyspark.sql import Window
l =[(1, 10 , 'F')
,(2 , 2 , 'M')
,(2 , 10 , 'F')
,(2 , 3 , 'F')
,(3 , 10, 'M')]
columns = ['id', 'Age', 'Gender']
df=spark.createDataFrame(l, columns)
w = Window.partitionBy('id')
df.withColumn('Age', F.mean('Age').over(w)).show()
Выход:
+---+----+------+
| id| Age|Gender|
+---+----+------+
| 1|10.0| F|
| 3|10.0| M|
| 2| 5.0| F|
| 2| 5.0| F|
| 2| 5.0| M|
+---+----+------+