我有一个巨大的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个值并汇总为单个值。
答案 0 :(得分:1)
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')