code: def concat(left, rights, distinct=False, axis=0):
      
      from ..utils import to_collection
  
      if isinstance(rights, Node):
          rights = [rights, ]
      if not rights:
          raise ValueError('At least one DataFrame should be provided.')
  
      if axis == 0:
          for right in rights:
              left = union(left, right, distinct=distinct)
          return left
      else:
          rights = [to_collection(r) for r in rights]
  
      ConcatCollectionExpr.validate_input(left, *rights)
  
      if hasattr(left, '_xflow_concat'):
          return left._xflow_concat(rights)
      else:
          return __horz_concat(left, rights)
docs: Concat collections.
  
      :param left: left collection
      :param rights: right collections, can be a DataFrame object or a list of DataFrames
      :param distinct: whether to remove duplicate entries. only available when axis == 0
      :param axis: when axis == 0, the DataFrames are merged vertically, otherwise horizontally.
      :return: collection
  
      Note that axis==1 can only be used under Pandas DataFrames or XFlow.
  
      :Example:
      >>> df['name', 'id'].concat(df2['score'], axis=1)