Как выбрать все столбцы для строк с максимальным значением - PullRequest
0 голосов
/ 06 сентября 2018

Мне нужно выбрать все столбцы в кадре данных, сгруппировавшись по «ID». Но когда я это делаю, я получаю только идентификатор и «ценность». Мне нужны все столбцы

a=df.groupby(df['id']).agg({"date": "max"}
a.show()

При этом выбираются только столбцы «id» и «date». Есть и другие столбцы. Как выбрать все столбцы для максимального значения в дате.

1 Ответ

0 голосов
/ 06 сентября 2018

В spark есть два способа присоединить его к предыдущему фрейму данных, например:

a=df.groupby(df['id']).agg({"date": "max"}
df = df.join(
    a,
    on = "id",
    how = "inner"
)
df.show()

или используйте раздел окна следующим образом:

from pyspark.sql import Window
import pyspark.sql.functions as F
window = Window.partitionBy("id")
a = df.withColumn(
    (F.max(F.col("date")).over(window)).alias("max")
)
a.show() 

Я бы сказал, что предпочитаю первый, так как он дешевле, даже после объединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...