class_docstr: Aggregator that identifies a time point as anomalous as long as it is
  included in one of the input anomaly lists.
class_docstr_tok: ["Aggregator","that","identifies","a","time","point","as","anomalous","as","long","as","it","is","included","in","one","of","the","input","anomaly","lists","."]
code: def _predict_core(
      self,
      lists: Union[
          pd.DataFrame,
          Dict[str, Union[pd.Series, pd.DataFrame]],
          Dict[
              str,
              List[
                  Union[Tuple[pd.Timestamp, pd.Timestamp], pd.Timestamp]
              ],
          ],
      ],
  ) -> Union[
      pd.Series,
      List[Union[Tuple[pd.Timestamp, pd.Timestamp], pd.Timestamp]],
  ]:
      if isinstance(lists, dict):
          if isinstance(next(iter(lists.values())), list):
              clean_lists = {
                  key: validate_events(value)
                  for key, value in lists.items()
              }
              return validate_events(
                  [
                      window
                      for clean_predict in clean_lists.values()
                      for window in clean_predict
                  ]
              )
          else:  # a dict of pandas Series/DataFrame
              return self._predict_core(
                  pd.concat(lists, join="outer", axis=1)
              )
      else:  # pandas DataFrame
          predicted = lists.any(axis=1)
          predicted[~predicted & lists.isna().any(axis=1)] = float(
              "nan"
          )
          return predicted
  
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 3 for calling the OrAggregator obj's underlying member method code with example usage: obj._predict_core(lists) and returns: predicted, validate_events, self