code: def add_predict_to_pd_xshards(xshards, pred_xshards):
      def add_prediction(df_preds):
          df, preds = df_preds
          preds = preds["prediction"]
          if isinstance(preds[0], np.ndarray):
              df["prediction"] = [pred.tolist() for pred in preds]
          else:
              df["prediction"] = [pred for pred in preds]
          return df
  
      result = SparkXShards(
          xshards.rdd.zip(pred_xshards.rdd).map(add_prediction),
          class_name="pandas.core.frame.DataFrame",
      )
      return result
  
imports: from contextlib import closing
  import socket
  import sys
  import tempfile
  import shutil
  from bigdl.dllib.utils import log4Error
  from bigdl.dllib.utils.common import callBigDlFunc
  from bigdl.dllib.utils.file_utils import get_file_list, is_local_path
  from bigdl.orca.data import SparkXShards
  from bigdl.orca.data.utils import get_size
  from bigdl.orca.data.file import put_local_dir_tree_to_remote, put_local_file_to_remote, get_remote_file_to_local, get_remote_dir_to_local
  from bigdl.dllib.utils.utils import convert_row_to_numpy
  from functools import partial
  import numpy
  from bigdl.orca.common import SafePickle
  import os
  import subprocess
  from bigdl.dllib.utils.log4Error import *
label_desc: Use image node_id 4 for calling a global function with example usage: add_predict_to_pd_xshards(xshards, pred_xshards) and returns: result, df