重组pyspark数据框

时间:2019-03-31 13:09:30

标签: python-3.x pandas dataframe pyspark

我正在解决回归问题。为此,我首先对数据进行了聚类,并在每个聚类上应用了回归模型。现在,我想实现另一个回归模型,该模型将每个聚类的预测输出作为特征并输出汇总的预测值。

我已经在pyspark中实现了聚类和回归模型。 但是我最终无法提取每个聚类的输出作为向另一个回归模型输入的功能。

如何在pyspark(大概)或熊猫中有效地实现这种转换?

当前数据框:

date   cluster  predVal actual
31-03-2019 0     14      13
31-03-2019 1     24      15
31-03-2019 2     13      10
30-03-2019 0     14      13
30-03-2019 1     24      15
30-03-2019 2     13      10

必需的数据框

date       predVal0    predVal1   predVal2    actual
31-03-2019 14          24         13          38  // 13+15+10
30-03-2019 14          24         13          38  // 13+15+10

1 个答案:

答案 0 :(得分:2)

您要在pyspark中做一个透视,然后通过合计predVal {i}列来创建一个新列。您应该分三步进行。

第一步,您想应用数据透视。您的索引是日期,要旋转的列是群集,值是predVal的列。

df_pivot = df.groupBy('date').pivot('cluster').agg(first('predVal'))

然后,您应该求和

df_actual = df.groupBy('date').sum('actual')

最后,您可以将实际列与索引列数据上的数据透视表连接起来:

df_final = df_pivot.join(df_actual ,['date']) 

此链接很好地回答了您的问题: -https://databricks.com/blog/2016/02/09/reshaping-data-with-pivot-in-apache-spark.html