Pyspark получает последний ненулевой элемент каждого столбца в одной строкеPython

Программы на Python
Ответить
Anonymous
 Pyspark получает последний ненулевой элемент каждого столбца в одной строке

Сообщение Anonymous »

Позвольте мне объяснить мой вопрос на примере:
У меня есть фрейм данных:

Код: Выделить всё

pd_1 = pd.DataFrame({'day':[1,2,3,2,1,3],
'code': [10, 10, 20,20,30,30],
'A': [44, 55, 66,77,88,99],
'B':['a',None,'c',None,'d', None],
'C':[None,None,'12',None,None, None]
})
df_1 = sc.createDataFrame(pd_1)
df_1.show()
Вывод:

Код: Выделить всё

+---+----+---+----+----+
|day|code|  A|   B|   C|
+---+----+---+----+----+
|  1|  10| 44|   a|null|
|  2|  10| 55|null|null|
|  3|  20| 66|   c|  12|
|  2|  20| 77|null|null|
|  1|  30| 88|   d|null|
|  3|  30| 99|null|null|
+---+----+---+----+----+
Я хочу получить новый фрейм данных, каждая строка соответствует коду, и для каждого столбца я хочу иметь самое последнее ненулевое значение (с самым высоким днем).
В pandas я могу просто сделать

Код: Выделить всё

pd_2 = pd_1.sort_values('day', ascending=True).groupby('code').last()
pd_2.reset_index()
чтобы получить

Код: Выделить всё

    code    day A   B   C
0   10       2  55  a   None
1   20       3  66  c   12
2   30       3  99  d   None
Мой вопрос: как я могу это сделать в pyspark (предпочтительно версии

Подробнее здесь: https://stackoverflow.com/questions/704 ... in-one-row
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»