我想在数据框中的不同列上计算一堆不同的agg函数。
我知道我可以做这样的事情,但是输出全都是一行。
df.agg(max("cola"), min("cola"), max("colb"), min("colb"))
假设我将在10个不同的列上执行100个不同的聚合。
我希望输出数据框像这样-
|Min|Max|AnotherAggFunction1|AnotherAggFunction2|...etc..
cola | 1 | 10| ...
colb | 2 | NULL| ...
colc | 5 | 20| ...
cold | NULL | 42| ...
...
我的行是我正在执行聚合的每一列,而我的列是聚合函数。例如,如果我不计算colb
max,某些区域将为空。
我该如何完成?
您可以创建一个Map列,例如Metrics
,其中键是列名,其值是聚合的结构(最大值,最小值,平均值,...)。我正在使用map_from_entries
函数创建一个地图列(可从Spark 2.4+获得)。然后,只需分解地图即可获得所需的结构。
以下是您可以适应您的要求的示例:
map_from_entries