pyspark group by sum

问题描述 投票:-1回答:2

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

id / number / value / x

我想分组列id,数字,然后添加一个新的列,其中每个id和数字的值总和。我想保留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)

有人可以帮忙吗?

pyspark apache-spark-sql spark-dataframe pyspark-sql
2个回答
2
投票

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

你可以有一个3列输出(idnumbersum(value)),如下所示:

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

-2
投票

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

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

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

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

希望能帮助到你。

问候,

Neeraj

© www.soinside.com 2019 - 2024. All rights reserved.