Вопрос новичка pyspark — получить все столбцы с минимальной / максимальной зарплатой

#pyspark #min

#pyspark #мин

Вопрос:

Я новичок в pyspark и понимаю различные агрегированные функции. Однако они дают только столбец, в котором применяется агрегатная функция. Например, если мой dataframe df равен —

Employee|Age

ABC|23

XYZ|32

Результат, полученный с помощью df.select(min("Age")).show()

min(Age) — 23

Я хочу получить это —

Employee|Age

ABC|23

Ответ №1:

Используйте соединение.

 df_data = [
    ('abc',23),
    ('def',32)
]

df = spark.createDataFrame(df_data, ['Employee', 'Age'])

df_min_age = df.groupBy().agg(min('Age').alias('Age'))
df_min = df.join(df_min_age, ['Age'], 'inner')

df_min.show()

 --- -------- 
|Age|Employee|
 --- -------- 
| 23|     abc|
 --- --------