逗号分隔列上的PySpark聚合

时间:2018-09-13 15:31:11

标签: dataframe pyspark aggregate

我有一个巨大的DataFrame,其中包含许多列中的两列:"NAME""VALUE""NAME"列的行值之一是"X,Y,V,A"

我想转置我的DataFrame,所以"NAME"的值是列,而"VALUE"的平均值是行值。

我使用了透视功能:

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

"X,Y,V,A"以外的所有NAME值都可以很好地与上述功能配合使用。我不确定如何分隔"X,Y,V,A"的4个值并汇总为单个值。

1 个答案:

答案 0 :(得分:1)

IIUC,您需要先splitexplode字符串:

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

现在您可以分组和旋转:

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