docstr: Create container from `X_output` with additional metadata.
  
  Parameters
  ----------
  X_output : {ndarray, dataframe}
      Data to wrap.
  
  X_original : {ndarray, dataframe}
      Original input dataframe. This is used to extract the metadata that should
      be passed to `X_output`, e.g. pandas row index.
  
  columns : callable, ndarray, or None
      The column names or a callable that returns the column names. The
      callable is useful if the column names require some computation. If `None`,
      then no columns are passed to the container's constructor.
  
  Returns
  -------
  wrapped_output : container_type
      `X_output` wrapped into the container type.
docstr_tok: ["Create","container","from","`","X_output","`","with","additional","metadata",".","Parameters","--","--","--","--","--","X_output",":","{","ndarray",",","dataframe","}","Data","to","wrap",".","X_original",":","{","ndarray",",","dataframe","}","Original","input","dataframe",".","This","is","used","to","extract","the","metadata","that","should","be","passed","to","`","X_output","`",",","e.g",".","pandas","row","index",".","columns",":","callable",",","ndarray",",","or","None","The","column","names","or","a","callable","that","returns","the","column","names",".","The","callable","is","useful","if","the","column","names","require","some","computation",".","If","`","None","`",",","then","no","columns","are","passed","to","the","container","'s","constructor",".","Returns","--","--","--","-","wrapped_output",":","container_type","`","X_output","`","wrapped","into","the","container","type","."]
code: def create_container(self, X_output, X_original, columns):
      """Create container from `X_output` with additional metadata.
  
      Parameters
      ----------
      X_output : {ndarray, dataframe}
          Data to wrap.
  
      X_original : {ndarray, dataframe}
          Original input dataframe. This is used to extract the metadata that should
          be passed to `X_output`, e.g. pandas row index.
  
      columns : callable, ndarray, or None
          The column names or a callable that returns the column names. The
          callable is useful if the column names require some computation. If `None`,
          then no columns are passed to the container's constructor.
  
      Returns
      -------
      wrapped_output : container_type
          `X_output` wrapped into the container type.
      """
  
imports: import importlib
  from functools import wraps
  from typing import Protocol, runtime_checkable
  import numpy
  from scipy.sparse import issparse
  from .._config import get_config
  from ._available_if import available_if
label_desc: Use image node_id 1 for calling the ContainerAdapterProtocol obj's underlying member method code with example usage: obj.create_container(X_output, X_original, columns) without return types