class_docstr: Represents a grouped dataset created by calling ``Dataset.groupby()``.
  
  The actual groupby is deferred until an aggregation is applied.
class_docstr_tok: ["Represents","a","grouped","dataset","created","by","calling","``","Dataset.groupby","(",")","``",".","The","actual","groupby","is","deferred","until","an","aggregation","is","applied","."]
docstr: Helper for aggregating on a particular subset of the dataset.
  
  This validates the `on` argument, and converts a list of column names
  to a multi-aggregation. A null `on` results in a
  multi-aggregation on all columns for an Arrow Dataset, and a single
  aggregation on the entire row for a simple Dataset.
docstr_tok: ["Helper","for","aggregating","on","a","particular","subset","of","the","dataset",".","This","validates","the","`","on","`","argument",",","and","converts","a","list","of","column","names","to","a","multi-aggregation",".","A","null","`","on","`","results","in","a","multi-aggregation","on","all","columns","for","an","Arrow","Dataset",",","and","a","single","aggregation","on","the","entire","row","for","a","simple","Dataset","."]
code: def _aggregate_on(
      self,
      agg_cls: type,
      on: Union[str, List[str]],
      ignore_nulls: bool,
      *args,
      **kwargs,
  ):
      """Helper for aggregating on a particular subset of the dataset.
  
      This validates the `on` argument, and converts a list of column names
      to a multi-aggregation. A null `on` results in a
      multi-aggregation on all columns for an Arrow Dataset, and a single
      aggregation on the entire row for a simple Dataset.
      """
      aggs = self._dataset._build_multicolumn_aggs(
          agg_cls,
          on,
          ignore_nulls,
          *args,
          skip_cols=self._key,
          **kwargs,
      )
      return self.aggregate(*aggs)
  
imports: from typing import Any, Dict, Iterable, List, Optional, Tuple, Union
  from ._internal.table_block import TableBlockAccessor
  from ray.data._internal import sort
  from ray.data._internal.compute import ComputeStrategy
  from ray.data._internal.delegating_block_builder import DelegatingBlockBuilder
  from ray.data._internal.execution.interfaces import TaskContext
  from ray.data._internal.logical.interfaces import LogicalPlan
  from ray.data._internal.logical.operators.all_to_all_operator import Aggregate
  from ray.data._internal.plan import AllToAllStage
  from ray.data._internal.push_based_shuffle import PushBasedShufflePlan
  from ray.data._internal.shuffle import ShuffleOp, SimpleShufflePlan
  from ray.data._internal.sort import SortKey
  from ray.data.aggregate import AggregateFn, Count, Max, Mean, Min, Std, Sum
  from ray.data.aggregate._aggregate import _AggregateOnKeyBase
  from ray.data.block import Block, BlockAccessor, BlockExecStats, BlockMetadata, KeyType, UserDefinedFunction
  from ray.data.context import DataContext
  from ray.data.dataset import DataBatch, Dataset
  from ray.util.annotations import PublicAPI
label_desc: Use image node_id 4 for calling the GroupedData obj's underlying member method code with example usage: obj._aggregate_on(agg_cls, on, ignore_nulls) and returns: self