2015-11-04 4 views
11

Мне нужен результирующий фрейм данных в строке ниже, чтобы иметь псевдоним «maxDiff» для столбца max ('diff') после groupBy. Однако нижняя строка не меняет никаких изменений и не выдает ошибку.Атрибут столбца после groupBy в pyspark

grpdf = joined_df.groupBy(temp1.datestamp).max('diff').alias("maxDiff") 

ответ

12

Это потому, что вы альясинг всего DataFrame объекта, не Column. Вот пример того, как псевдоним Column только:

import pyspark.sql.functions as func 

grpdf = joined_df \ 
    .groupBy(temp1.datestamp) \ 
    .max('diff') \ 
    .select(func.col("max(diff)").alias("maxDiff")) 
+0

да .. это работает .. кроме этого func. не требуется – mhn

+1

Это не так, если вы уже импортировали 'pyspark.sql.functions' в свой скрипт – Nhor

25

Вы можете использовать agg вместо вызова max метод:

from pyspark.sql.functions import max 

joined_df.groupBy(temp1.datestamp).agg(max("diff").alias("maxDiff")) 
+2

Я предпочитаю это принятому ответу, потому что ему не нужно заранее знать имя, которое Spark даст агрегированной колонке , – abeboparebop

0

В дополнение к ответам уже здесь, также следующее удобные способы, если вам знать имя агрегированного столбца, где вам не придется импортировать из pyspark.sql.functions:

grouped_df = joined_df.groupBy(temp1.datestamp) \ 
         .max('diff') \ 
         .selectExpr('max(diff) AS maxDiff') 

См docs для получения информации о .selectExpr()

grouped_df = joined_df.groupBy(temp1.datestamp) \ 
         .max('diff') \ 
         .withColumnRenamed('max(diff)', 'maxDiff') 

См docs для получения информации о .withColumnRenamed()

Этот ответ здесь идет более подробно: https://stackoverflow.com/a/34077809

+0

** Пробовал ли вы первый блок кода? ** Кажется, это неправильно. Spark не может разрешить имя столбца указанными способами. В вашем блоке кода искру попытайтесь найти колонку ** diff ** и попытайтесь запустить ** max ** функцию на заданном наборе, но grouped_data не содержит колонки ** diff **, она содержит ** temp1.datestamp и макс (дифференциал) **. –

Смежные вопросы