pyspark group by sum

时间:2017-12-15 14:40:47

标签: pyspark apache-spark-sql spark-dataframe pyspark-sql

我有一个包含4列的pyspark数据框。

id / number / value / x

我想分组列id,数字,然后添加一个新的列,其中包含每个id和number的值之和。我想保留colunms x而不对其做任何事情。

 
df= df.select("id","number","value","x")
      .groupBy( 'id', 'number').withColumn("sum_of_value",df.value.sum())

最后我想要一个包含5列的数据框:id / number / value / x / sum_of_value)

有人可以提供帮助吗?

2 个答案:

答案 0 :(得分:2)

您尝试实现的结果没有意义。您的输出数据框将只包含按分组或聚合的列(在本例中为求和)。按xvalue分组时,idnumber会有多个值。

您可以拥有3列输出(idnumbersum(value)),如下所示:

df_summed = df.groupBy(['id', 'number'])['value'].sum()

答案 1 :(得分:-2)

让我们说你的DataFrame df最初有3列。

df1 = df.groupBy("id","number").count()

现在df1将包含2列id,number和count。

现在你可以根据列“id”和“number”加入df1和df,并选择你想要选择的列。

希望它有所帮助。

此致

Neeraj