ALE*_*HEW 4 r aggregate-functions apache-spark pyspark
我想将数据框分组到单个列上,然后对所有列应用聚合函数。
例如,我有一个包含 10 列的 df。我希望对第一列“1”进行分组,然后对所有剩余列(均为数字)应用聚合函数“sum”。
与此等效的 R 是 summarise_all。前在R。
df = df%>%group_by(column_one)%>%summarise_all(funs(sum))
Run Code Online (Sandbox Code Playgroud)
我不想在 pyspark 的聚合命令中手动输入列,因为数据框中的列数是动态的。
这是 pyspark 的示例:
df = spark.createDataFrame([(1,10,20,30),(1,10,20,30),(1,10,20,30)],['id','value1','value2','value3'])
exprs = {x: "sum" for x in df.columns if x is not df.columns[0]}
df.groupBy("id").agg(exprs).show()
#+---+-----------+-----------+-----------+
#| id|sum(value2)|sum(value1)|sum(value3)|
#+---+-----------+-----------+-----------+
#| 1| 60| 30| 90|
#+---+-----------+-----------+-----------+
Run Code Online (Sandbox Code Playgroud)
这里df.columns[0]代表 的第一列df。您还可以按名称指定 groupBy 列,如下所示。
exprs = {x: "sum" for x in df.columns if x is not 'id'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16100 次 |
| 最近记录: |