code: def calculate_group(
      self, data: pd.DataFrame, **kwargs
  ) -> pd.DataFrame:
      group_column, value_columns = self.validate_calculation(
          data.columns, **kwargs
      )
      d1 = data[value_columns]
      d2 = data[group_column]
      temp = (
          d1[~d2.isna()]
          .groupby(d2)
          .rank(ascending=True, pct=True)[value_columns]
          .reset_index()
      )
      return temp.merge(d2.reset_index(), how="right", on=["index"])[
          value_columns
      ]
  
imports: from upgini.autofe.operand import PandasOperand, VectorizableMixin
  from typing import Optional
  import pandas
label_desc: Use image node_id 2 for calling the GroupByThenRank obj's underlying member method code with example usage: obj.calculate_group(data) and returns: temp