def generate_row_keys(self):
        """
        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:
        """
        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)
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: