code: def build_code(self):
      code = build_code_data(self.datasets, is_merge=True)
      how, indicator, sort = (
          self.config.get(prop) for prop in ["how", "indicator", "sort"]
      )
  
      def build_merge(df1, df2, left, right, ind_id=1):
          suffixes = ""
          if left.get("suffix") or right.get("suffix"):
  
              def suffix_str(suffix):
                  return "'{}'".format(suffix) if suffix else "None"
  
              suffixes = ", suffixes=[{}, {}]".format(
                  suffix_str(left.get("suffix")),
                  suffix_str(right.get("suffix")),
              )
          sort_param = ", sort=True" if sort else ""
          indicator_param = (
              ", indicator='merge_{}".format(ind_id)
              if indicator
              else ""
          )
          return (
              "df = {df1}.merge({df2}, how='{how}', left_index=True, right_index=True"
              "{sort}{indicator}{suffixes})"
          ).format(
              df1=df1,
              df2=df2,
              how=how,
              sort=sort_param,
              indicator=indicator_param,
              suffixes=suffixes,
          )
  
      code.append(
          build_merge("df1", "df2", self.datasets[0], self.datasets[1])
      )
      if len(self.datasets) > 2:
          for idx, dataset in enumerate(self.datasets[2:], 3):
              code.append(
                  build_merge(
                      "df", "df{}".format(idx), {}, dataset, idx - 1
                  )
              )
      return code
  
file_path: dtale/dtale/combine_data.py
imports: import json
  import pandas
  import dtale.global_state
label_desc: Use image node_id 3 for calling the MergeBuilder obj's underlying member method code with example usage: obj.build_code() and returns: code, str, unknown