code: def _call_dataframes(self, objs):
      if self.axis == 0:
          row_length = 0
          index = None
          empty_dfs = []
          for df in objs:
              if index is None:
                  index = df.index_value.to_pandas()
              else:
                  index = self._concat_index(
                      index, df.index_value.to_pandas()
                  )
              row_length += df.shape[0]
              if df.ndim == 2:
                  empty_dfs.append(build_empty_df(df.dtypes))
              else:
                  empty_dfs.append(
                      build_empty_series(df.dtype, name=df.name)
                  )
  
          emtpy_result = pd.concat(
              empty_dfs, join=self.join, sort=self.sort
          )
          shape = (row_length, emtpy_result.shape[1])
          columns_value = parse_index(
              emtpy_result.columns, store_data=True
          )
  
          if self.join == "inner":
              objs = [o[list(emtpy_result.columns)] for o in objs]
  
          if self.ignore_index:  # pragma: no cover
              index_value = parse_index(pd.RangeIndex(row_length))
          else:
              index_value = parse_index(index, objs)
  
          new_objs = []
          for obj in objs:
              if obj.ndim != 2:
                  # series
                  new_obj = obj.to_frame().reindex(
                      columns=emtpy_result.dtypes.index
                  )
              else:
                  # dataframe
                  if list(obj.dtypes.index) != list(
                      emtpy_result.dtypes.index
                  ):
                      new_obj = obj.reindex(
                          columns=emtpy_result.dtypes.index
                      )
                  else:
                      new_obj = obj
              new_objs.append(new_obj)
  
          return self.new_dataframe(
              new_objs,
              shape=shape,
              dtypes=emtpy_result.dtypes,
              index_value=index_value,
              columns_value=columns_value,
          )
      else:
          col_length = 0
          empty_dfs = []
          for df in objs:
              if df.ndim == 2:
                  # DataFrame
                  col_length += df.shape[1]
                  empty_dfs.append(build_empty_df(df.dtypes))
              else:
                  # Series
                  col_length += 1
                  empty_dfs.append(
                      build_empty_series(df.dtype, name=df.name)
                  )
  
          emtpy_result = pd.concat(
              empty_dfs, join=self.join, axis=1, sort=True
          )
          if self.ignore_index:
              columns_value = parse_index(pd.RangeIndex(col_length))
          else:
              columns_value = parse_index(
                  pd.Index(emtpy_result.columns), store_data=True
              )
  
          if (
              self.ignore_index
              or len({o.index_value.key for o in objs}) == 1
          ):
              new_objs = [
                  obj if obj.ndim == 2 else obj.to_frame()
                  for obj in objs
              ]
          else:  # pragma: no cover
              raise NotImplementedError(
                  "Does not support concat dataframes which has different index"
              )
  
          shape = (objs[0].shape[0], col_length)
          return self.new_dataframe(
              new_objs,
              shape=shape,
              dtypes=emtpy_result.dtypes,
              index_value=objs[0].index_value,
              columns_value=columns_value,
          )
  
imports: import pandas
  import numpy
  from ...None import opcodes
  from ...core import ENTITY_TYPE, OutputType, recursive_tile
  from ...serialization.serializables import FieldTypes, ListField, StringField, BoolField, AnyField
  from ...utils import lazy_import, has_unknown_shape
  from ..operands import DataFrameOperand, DataFrameOperandMixin, SERIES_TYPE
  from ..utils import parse_index, build_empty_df, build_empty_series, standardize_range_index, validate_axis
label_desc: Use image node_id 10 for calling the DataFrameConcat obj's underlying member method code with example usage: obj._call_dataframes(objs) and returns: self, self