我有一个数据集,我想创建一个新列,其中包含ID出现的年龄平均值和每个ID的性别模式。
id Age Gender
1 10 F
2 2 M
2 10 F
2 3 F
3 10 M
预期产量
id Age Gender
1 10 F
2 5 F
2 5 F
2 5 F
3 10 M
答案 0 :(得分:0)
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|
+---+----+------+