code: def calculate(
      self, data: pd.DataFrame, is_root=False
  ) -> pd.DataFrame:
      main_column = (
          None
          if self.main_column_node is None
          else self.main_column_node.get_columns()[0]
      )
      if isinstance(self.op, PandasOperand):
          columns = self.get_columns()
          new_data = self.op.calculate_group(
              data[columns], main_column=main_column
          )
          new_data.rename(
              columns=dict(zip(columns, self.get_display_names())),
              inplace=True,
          )
      else:
          raise NotImplementedError(
              f"Unrecognized operator {self.op.name}."
          )
  
      new_data.replace([-np.inf, np.inf], np.nan, inplace=True)
  
      if is_root:
          self.data = new_data
      return new_data
  
imports: import hashlib
  import itertools
  from typing import Dict, List, Optional, Tuple, Union
  import numpy
  import pandas
  from pandas._typing import DtypeObj
  from upgini.autofe.all_operands import find_op
  from upgini.autofe.operand import Operand, PandasOperand
label_desc: Use image node_id 4 for calling the FeatureGroup obj's underlying member method code with example usage: obj.calculate(data, is_root) and returns: new_data