def encode(dframe, dataset, add_index=True): """Encode the columns for `dataset` to slugs and add ID column. The ID column is the dataset_id for dataset. This is used to link observations to a specific dataset. :param dframe: The DataFrame to encode. :param dataset: The Dataset to use a mapping for. :param add_index: Add index to the DataFrame, default True. :returns: A modified `dframe` as a BambooFrame. """ dframe = BambooFrame(dframe) if add_index: dframe = dframe.add_index() dframe = dframe.add_id_column(dataset.dataset_id) encoded_columns_map = dataset.schema.rename_map_for_dframe(dframe) return dframe.rename(columns=encoded_columns_map)