PySpark Dataframe: объединение определенных строк

У меня возникли проблемы с выяснением этого

Вот простой пример:

+---+----+-----+
| Id|Rank|State+
+---+----+-----+
|  a|   5|  NJ +
|  a|   7|  GA +
|  b|   8|  CA +
|  b|   1|  CA +
+---+----+-----+

Я хотел бы отформатировать этот фрейм данных таким образом, чтобы, если один и тот же идентификатор находился в нескольких состояниях, он сохранял только одно состояние. В этом примере любая строка с идентификатором "a" должна иметь состояние "NJ" вместо "NJ" и "GA".

Результат должен быть примерно таким:

+---+----+-----+
| Id|Rank|State+
+---+----+-----+
|  a|   5|  NJ +
|  a|   7|  NJ +
|  b|   8|  CA +
|  b|   1|  CA +
+---+----+-----+`

Как это можно сделать? Спасибо!!

1 ответ

Пытаться first оконная функция как:

w = Window().partitionBy("Id").orderBy("Rank")
df.select(col("Id"), col("Rank"), first("State", True).over(w).alias("NewState"))

Это положит в "NewState" столбец первое состояние в соответствии с рангом в группе идентификаторов.
То же самое можно легко выразить в чистом SQL, если вы хотите его использовать.

Кстати, добро пожаловать в сообщество Stackru!

Другие вопросы по тегам