Grammar
groupBy Operation Grammar
Create and transform GroupBy
groupBy(moveToTop: Boolean= true) { columns: ColumnsSelector}
[ .sortByGroup() ]
[ .sortByGroupDesc() ]
[ .sortByCount() ]
[ .sortByCountAsc() ]
[ .sortByKey() ]
[ .sortByKeyDesc() ]
[ .sortBy{ columns: ColumnsSelector} ]
[ .sortByDesc{ columns: ColumnsSelector} ]
[ .updateGroups{ frameExpression} ]
[ .filter{ predicate: GroupedRowFilter} ]
[ .add(column: DataColumn) { rowExpression: RowExpression} ]
Reduce GroupBy into DataFrame
GroupBy.minBy{ rowExpression: RowExpression}
| .maxBy{ rowExpression: RowExpression}
| .first[ { rowCondition: RowFilter} ]
| .last[ { rowCondition: RowFilter} ]
| .medianBy{ rowExpression: RowExpression}
| .percentileBy(percentile: Double) { rowExpression: RowExpression}
.concat()
| .into(column: String) [ { rowExpression: RowExpression} ]
| .values{ valueColumns: ColumnsSelector}
See GroupBy Reducing.
Aggregate GroupBy into DataFrame
| .concatWithKeys()
| .into(column: String) [ { rowExpression: RowExpression} ]
| .values{ valueColumns: ColumnsSelector}
| .count()
| .countDistinct()
| .aggregate{ aggregations: AggregateDsl}
See GroupBy Aggregations.
Map GroupBy into List, DataFrame or FrameColumn
GroupBy.map{ GroupWithKey-> value}
| .mapToRows{ GroupWithKey-> DataRow?}
| .mapToFrames{ GroupWithKey-> DataFrame}
See GroupBy Mapping.
Pivot GroupBy into PivotGroupBy and reduce / aggregate it
GroupBy.pivot{ columns: ColumnsSelector}
[ .default(defaultValue) ]
Check out PivotGroupBy Grammar for more information.