def shuffle(self, func, num_splits=None, **kwargs):
        """Shuffle the order of the data in this axis based on the `func`.

        Extends `BaseFrameAxisPartition.shuffle`.

        :param func:
        :param num_splits:
        :param kwargs:
        :return:
        """
        if num_splits is None:
            num_splits = len(self.list_of_blocks)

        args = [self.axis, func, num_splits, kwargs]
        args.extend(self.list_of_blocks)
        return [
            PyarrowOnRayFramePartition(obj)
            for obj in deploy_ray_axis_func._remote(args, num_return_vals=num_splits)
        ]
Shuffle the order of the data in this axis based on the `func`.

        Extends `BaseFrameAxisPartition.shuffle`.

        :param func:
        :param num_splits:
        :param kwargs:
        :return: