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!