我有一个包含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)
有人可以提供帮助吗?
答案 0 :(得分:2)
您尝试实现的结果没有意义。您的输出数据框将只包含按分组或聚合的列(在本例中为求和)。按x
和value
分组时,id
和number
会有多个值。
您可以拥有3列输出(id
,number
和sum(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