code: def _hstack(self, Xs):
          
          types = set(type(X) for X in Xs)
  
          if self.sparse_output_:
              return sparse.hstack(Xs).tocsr()
          elif dd.Series in types or dd.DataFrame in types:
              with warnings.catch_warnings():
                  warnings.filterwarnings("ignore", "Concatenating", UserWarning)
                  return dd.concat(Xs, axis="columns")
          elif da.Array in types:
              # To allow compatibility with dask core 1.0.0, this is the `else`
              # part of the definition of the dask.array.hstack inlined.
              # The `then` branch is removed because _validate_output in
              # sklearn.compose.ColumnTransformer ensures ndim == 2, so the
              # check `all(x.ndim == 1 for x in Xs)` should always fail.
              #
              # Once dask.array.hstack supports allow_unknown_chunksizes,
              # changed this to da.hstack(Xs, allow_unknown_chunksizes=True)
              return da.concatenate(Xs, axis=1, allow_unknown_chunksizes=True)
          elif self.preserve_dataframe and (pd.Series in types or pd.DataFrame in types):
              return pd.concat(Xs, axis="columns")
          else:
              return np.hstack(Xs)
docs: Stacks X horizontally.
  
          Supports input types (X): list of
              numpy arrays, sparse arrays and DataFrames