code: def rank(self,
               method='ordinal',
               ascending=True,
               mask=NotSpecified,
               groupby=NotSpecified):
          
  
          if groupby is NotSpecified:
              return Rank(self, method=method, ascending=ascending, mask=mask)
  
          return GroupedRowTransform(
              transform=rankdata if ascending else rankdata_1d_descending,
              transform_args=(method,),
              factor=self,
              groupby=groupby,
              dtype=float64_dtype,
              missing_value=nan,
              mask=mask,
              window_safe=True,
          )
docs: Construct a new Factor representing the sorted rank of each column
          within each row.
  
          Parameters
          ----------
          method : str, {'ordinal', 'min', 'max', 'dense', 'average'}
              The method used to assign ranks to tied elements. See
              `scipy.stats.rankdata` for a full description of the semantics for
              each ranking method. Default is 'ordinal'.
          ascending : bool, optional
              Whether to return sorted rank in ascending or descending order.
              Default is True.
          mask : zipline.pipeline.Filter, optional
              A Filter representing assets to consider when computing ranks.
              If mask is supplied, ranks are computed ignoring any asset/date
              pairs for which `mask` produces a value of False.
          groupby : zipline.pipeline.Classifier, optional
              A classifier defining partitions over which to perform ranking.
  
          Returns
          -------
          ranks : zipline.pipeline.factors.Rank
              A new factor that will compute the ranking of the data produced by
              `self`.
  
          Notes
          -----
          The default value for `method` is different from the default for
          `scipy.stats.rankdata`.  See that function's documentation for a full
          description of the valid inputs to `method`.
  
          Missing or non-existent data on a given day will cause an asset to be
          given a rank of NaN for that day.
  
          See Also
          --------
          :func:`scipy.stats.rankdata`
          :class:`zipline.pipeline.factors.factor.Rank`