code: def _merge_pos(guest_pos: DataFrame, host_pos: List[DataFrame]):
      for host_df in host_pos:
          # assert alignment
          indexer = guest_pos.get_indexer(target="sample_id")
          host_df = host_df.loc(indexer=indexer, preserve_order=True)
          stack_df = DataFrame.hstack([guest_pos, host_df])
          guest_pos["sample_pos"] = stack_df.apply_row(_merge_pos_arr)
  
      return guest_pos
  
file_path: FATE/python/fate/ml/ensemble/algo/secureboost/common/predict.py
imports: import pandas
  import numpy
  from typing import List
  from fate.arch import Context
  from fate.arch.dataframe import DataFrame
  import copy
  from fate.ml.ensemble.learner.decision_tree.tree_core.decision_tree import DecisionTree, _make_decision, Node
  import functools
  from logging import getLogger
label_desc: Use image node_id 8 for calling a global function with example usage: _merge_pos(guest_pos, host_pos) and returns: guest_pos