code: def _make_vocab_df(self, df):
      ucols = [self.getPartitionKey(), self.getInputCol()]
      the_df = df.select(ucols).distinct().orderBy(ucols)
  
      return (
          DataFrameUtils.zip_with_index(
              df=the_df,
              start_index=1,
              col_name=self.getOutputCol(),
              partition_col=self.getPartitionKey(),
              order_by_col=self.getInputCol(),
          )
          if self.getResetPerPartition()
          else DataFrameUtils.zip_with_index(
              df=the_df,
              start_index=1,
              col_name=self.getOutputCol(),
          )
      )
  
imports: from typing import List
  from synapse.ml.cyber.utils.spark_utils import DataFrameUtils, ExplainBuilder, HasSetInputCol, HasSetOutputCol
  from pyspark.ml import Estimator, Transformer
  from pyspark.ml.param.shared import HasInputCol, HasOutputCol, Param, Params
  from pyspark.sql import DataFrame, functions
label_desc: Use image node_id 2 for calling the IdIndexer obj's underlying member method code with example usage: obj._make_vocab_df(df) and returns: unknown