逗号分隔列的PySpark聚合

问题描述 投票:0回答:1

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

我想转置我的DataFrame,因此"NAME"值是列,"VALUE"的平均值是行值。

我使用了pivot功能:

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

"X,Y,V,A"之外的所有NAME值都与上述相符。我不确定如何将"X,Y,V,A"的4个值与单个值的聚合分开。

dataframe pyspark aggregate
1个回答
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')
© www.soinside.com 2019 - 2024. All rights reserved.