# pandas.MultiIndex.from_frame

classmethod MultiIndex.from_frame(df, sortorder=None, names=None)

  Make a MultiIndex from a DataFrame.

  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([('HI',   'Temp'),
                  ('HI', 'Precip'),
                  ('NJ',   'Temp'),
                  ('NJ', 'Precip')],
                 names=['a', 'b'])

  Using explicit names, instead of the column names

      >>> pd.MultiIndex.from_frame(df, names=['state', 'observation'])
      MultiIndex([('HI',   'Temp'),
                  ('HI', 'Precip'),
                  ('NJ',   'Temp'),
                  ('NJ', 'Precip')],
                 names=['state', 'observation'])