Агрегация PySpark на колонке с разделением запятыми - PullRequest
0 голосов
/ 13 сентября 2018

У меня огромный DataFrame с двумя из множества столбцов: "NAME", "VALUE". Одним из значений строки для столбца "NAME" является "X,Y,V,A".

Я хочу транспонировать свой DataFrame, чтобы значения "NAME" были столбцами, а среднее значение "VALUE" - значениями строк.

Я использовал функцию поворота:

df1 = df.groupby('DEVICE', 'DATE').pivot('NAME').avg('VALUE')

Все значения NAME, за исключением "X,Y,V,A", хорошо работают с вышеуказанным. Я не уверен, как разделить 4 значения "X,Y,V,A" и агрегировать по отдельным значениям.

1 Ответ

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

IIUC, вам нужно split и explode строка:

from pyspark.sql.functions import split, explode 
df = df.withColumn("NAME", explode(split("NAME", ",")))

Теперь вы можете группировать и поворачивать:

df1 = df.groupby('DEVICE', 'DATE').pivot('NAME').avg('VALUE')
...