code: def from_frame(cls, df, sortorder=None, names=None):
          
          if not isinstance(df, ABCDataFrame):
              raise TypeError("Input must be a DataFrame")
  
          column_names, columns = lzip(*df.iteritems())
          names = column_names if names is None else names
          return cls.from_arrays(columns, sortorder=sortorder, names=names)
docs: Make a MultiIndex from a DataFrame.
  
          .. versionadded:: 0.24.0
  
          Parameters
          ----------
          df : DataFrame
              DataFrame to be converted to MultiIndex.
          sortorder : int, optional
              Level of sortedness (must be lexicographically sorted by that
              level).
          names : list-like, optional
              If no names are provided, use the column names, or tuple of column
              names if the columns is a MultiIndex. If a sequence, overwrite
              names with the given sequence.
  
          Returns
          -------
          MultiIndex
              The MultiIndex representation of the given DataFrame.
  
          See Also
          --------
          MultiIndex.from_arrays : Convert list of arrays to MultiIndex.
          MultiIndex.from_tuples : Convert list of tuples to MultiIndex.
          MultiIndex.from_product : Make a MultiIndex from cartesian product
                                    of iterables.
  
          Examples
          --------
          >>> df = pd.DataFrame([['HI', 'Temp'], ['HI', 'Precip'],
          ...                    ['NJ', 'Temp'], ['NJ', 'Precip']],
          ...                   columns=['a', 'b'])
          >>> df
                a       b
          0    HI    Temp
          1    HI  Precip
          2    NJ    Temp
          3    NJ  Precip
  
          >>> pd.MultiIndex.from_frame(df)
          MultiIndex(levels=[['HI', 'NJ'], ['Precip', 'Temp']],
                     codes=[[0, 0, 1, 1], [1, 0, 1, 0]],
                     names=['a', 'b'])
  
          Using explicit names, instead of the column names
  
          >>> pd.MultiIndex.from_frame(df, names=['state', 'observation'])
          MultiIndex(levels=[['HI', 'NJ'], ['Precip', 'Temp']],
                     codes=[[0, 0, 1, 1], [1, 0, 1, 0]],
                     names=['state', 'observation'])