code: def _call(self, estimator, method_name, *args, **kwargs):
      if method_name in ["fit", "fit_transform"]:
          estimator = GroupedEstimator(estimator, self)
  
      if not isinstance(estimator, GroupedEstimator):
          raise ValueError(
              "Class {0} is not GroupedEstimator".format(
                  estimator.__class__.__name__
              )
          )
  
      results = {}
      for name, group in self:
          e = estimator.groups[name]
          method = getattr(group, method_name)
          results[name] = method(e)
      self.estimator = estimator
      if method_name == "fit":
          return estimator
      else:
          return results
  
imports: import pandas
  import pandas.compat
  from pandas_ml.compat import Appender
  from pandas_ml.core.base import _BaseEstimator
  from pandas_ml.core.frame import ModelFrame
  from pandas_ml.core.generic import ModelPredictor, _shared_docs
  from pandas_ml.core.series import ModelSeries
label_desc: Use image node_id 3 for calling the ModelFrameGroupBy obj's underlying member method code with example usage: obj._call(estimator, method_name) and returns: estimator, results