code: def generate_row_keys(self):
          
          keys = self.key
          columns = self.values
          if not self._data:
              self._data = self.get_data()
  
          for column in columns:
              key_prefix = self.cache_key_prefix() + "#" + column
              self._data['cache_key'] = self._data[keys].apply(lambda xdf: key_prefix + "=" + '#'.join(xdf.astype(str).values),
                                                   axis=1)
          return list(self._data['cache_key'].values)
docs: Method for generating key features at serving time or prediction time
          :param data: Pass in the data that is necessary for generating the keys
           Example :
              Feature : User warehouse searches and conversions
              Keys will be of the form 'user_id#warehouse_id#searches=23811676#3'
              Keys will be of the form 'user_id#warehouse_id#conversions=23811676#3'
              data Frame should have values for all the columns as feature_key in this case ['user_id','warehouse_id']
          :return: