Skip to main content
`Ctrl`+`K`

# pandas.MultiIndex.from_frame

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

  Make a MultiIndex from a DataFrame.

  Each column of the DataFrame becomes one level of the MultiIndex, with the column values used as labels.

  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'])