class_docstr: Data model used for storing a batch of frames.
  Internally stored as a pandas DataFrame with columns
  "id" and "data".
  id: integer index of frame
  data: frame as np.array
  
  Arguments:
      frames (DataFrame): pandas Dataframe holding frames data
class_docstr_tok: ["Data","model","used","for","storing","a","batch","of","frames",".","Internally","stored","as","a","pandas","DataFrame","with","columns","''","id","''","and","``","data","''",".","id",":","integer","index","of","frame","data",":","frame","as","np.array","Arguments",":","frames","(","DataFrame",")",":","pandas","Dataframe","holding","frames","data"]
docstr: Merge list of batch frames column_wise and return a new batch frame
  Arguments:
      batches: List[Batch]: list of batch objects to be merged
      auto_renaming: if true rename column names if required
  
  Returns:
      Batch: Merged batch object
docstr_tok: ["Merge","list","of","batch","frames","column_wise","and","return","a","new","batch","frame","Arguments",":","batches",":","List","[","Batch","]",":","list","of","batch","objects","to","be","merged","auto_renaming",":","if","true","rename","column","names","if","required","Returns",":","Batch",":","Merged","batch","object"]
code: def merge_column_wise(
      cls, batches: List[Batch], auto_renaming=False
  ) -> Batch:
      """
      Merge list of batch frames column_wise and return a new batch frame
      Arguments:
          batches: List[Batch]: list of batch objects to be merged
          auto_renaming: if true rename column names if required
  
      Returns:
          Batch: Merged batch object
      """
      if not len(batches):
          return Batch()
  
      frames = [batch.frames for batch in batches]
  
      # Check merging matched indices
      frames_index = [list(frame.index) for frame in frames]
      for i, frame_index in enumerate(frames_index):
          assert (
              frame_index == frames_index[i - 1]
          ), "Merging of DataFrames with unmatched indices can cause undefined behavior"
  
      new_frames = pd.concat(
          frames, axis=1, copy=False, ignore_index=False
      )
      if new_frames.columns.duplicated().any():
          logger.debug(
              "Duplicated column name detected {}".format(new_frames)
          )
      return Batch(new_frames)
  
imports: from typing import Callable, Iterable, List, TypeVar, Union
  import numpy
  import pandas
  from evadb.expression.abstract_expression import ExpressionType
  from evadb.parser.alias import Alias
  from evadb.utils.generic_utils import PickleSerializer
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 33 for calling the Batch obj's underlying member method code with example usage: obj.merge_column_wise(cls, batches, auto_renaming) and returns: Batch, Batch