聚合列值以在python/pyspark中创建新列

聚合列值以在python/pyspark中创建新列,python,pyspark,Python,Pyspark,我有一个数据集,我想创建一个新列,其中包含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 您所需要的只是一个应用程序并应用该功能: 导入pyspark.sql.F函数 从pyspar

我有一个数据集,我想创建一个新列,其中包含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
您所需要的只是一个应用程序并应用该功能:

导入pyspark.sql.F函数
从pyspark.sql导入窗口
l=[(1,10,'F')
,(2,2,'M')
,(2,10,'F')
,(2,3,'F')
,(3,10,'M')]
列=['id'、'年龄'、'性别']
df=spark.createDataFrame(l,列)
w=Window.partitionBy('id'))
df.withColumn('Age',F.mean('Age')。超过(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| 
+---+----+------+

如果dataframe中有太多的列需要聚合,那么列的数量对于平均值的计算并不重要。