агрегировать значения столбцов для создания нового столбца в python / pyspark - PullRequest
0 голосов
/ 10 октября 2019

У меня есть набор данных, и я хочу создать новый столбец со средним возрастом для экземпляров идентификатора и режимом для пола для каждого идентификатора.

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

1 Ответ

0 голосов
/ 10 октября 2019

Все, что вам нужно, это окно и применение функции 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| 
+---+----+------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...