class_docstr: Aggregator derived from a user-given function and parameters.
  
  Parameters
  ----------
  aggregate_func: function
      A function aggregating multiple types of anomaly.
  
      The first input argument must be a pandas DataFrame, a dict of pandas
      Series/DataFrame, or a dict of event lists.
  
      - If a pandas DataFrame, every column is a binary Series representing a
        type of anomaly.
      - If a dict of pandas Series/DataFrame, every value of the dict is a
        binary Series/DataFrame representing a type or some types of anomaly;
      - If a dict of list, every value of the dict is a type of anomaly as a
        list of events, where each event is represented as a pandas Timestamp
        if it is instantaneous or a 2-tuple of pandas Timestamps if it is a
        closed time interval.
  
      Optional input argument may be accepted through parameter
      `aggregate_func_params`.
  
      The output must be a list of pandas Timestamps.
  
      - If input is a pandas DataFrame or a dict of Series/DataFrame, return
        a single binary pandas Series;
      - If input is a dict of lists, return a single list of events.
  
  aggregate_func_params: dict, optional
      Parameters of `aggregate_func`. Default: None.
class_docstr_tok: ["Aggregator","derived","from","a","user-given","function","and","parameters",".","Parameters","--","--","--","--","--","aggregate_func",":","function","A","function","aggregating","multiple","types","of","anomaly",".","The","first","input","argument","must","be","a","pandas","DataFrame",",","a","dict","of","pandas","Series\/DataFrame",",","or","a","dict","of","event","lists",".","-","If","a","pandas","DataFrame",",","every","column","is","a","binary","Series","representing","a","type","of","anomaly",".","-","If","a","dict","of","pandas","Series\/DataFrame",",","every","value","of","the","dict","is","a","binary","Series\/DataFrame","representing","a","type","or","some","types","of","anomaly",";","-","If","a","dict","of","list",",","every","value","of","the","dict","is","a","type","of","anomaly","as","a","list","of","events",",","where","each","event","is","represented","as","a","pandas","Timestamp","if","it","is","instantaneous","or","a","2-tuple","of","pandas","Timestamps","if","it","is","a","closed","time","interval",".","Optional","input","argument","may","be","accepted","through","parameter","`","aggregate_func_params","`",".","The","output","must","be","a","list","of","pandas","Timestamps",".","-","If","input","is","a","pandas","DataFrame","or","a","dict","of","Series\/DataFrame",",","return","a","single","binary","pandas","Series",";","-","If","input","is","a","dict","of","lists",",","return","a","single","list","of","events",".","aggregate_func_params",":","dict",",","optional","Parameters","of","`","aggregate_func","`",".","Default",":","None","."]
code: def __init__(
      self,
      aggregate_func: Callable,
      aggregate_func_params: Optional[Dict[str, Any]] = None,
  ) -> None:
      super().__init__()
      self.aggregate_func = aggregate_func
      self.aggregate_func_params = aggregate_func_params
  
file_path: adtk/src/adtk/aggregator/_aggregator.py
imports: from typing import Any, Callable, Dict, List, Optional, Tuple, Union
  import pandas
  from .._aggregator_base import _Aggregator
  from ..data import validate_events
label_desc: Use image node_id 1 to create a new CustomizedAggregator object from inherited base classes: _Aggregator with example: obj = CustomizedAggregator(aggregate_func, aggregate_func_params)