pandas.MultiIndex

class pandas.MultiIndex(levels=None, codes=None, sortorder=None, names=None, dtype=None, copy=False, name=None, verify_integrity=True)[source]

A multi-level, or hierarchical, index object for pandas objects.

Parameters
levelssequence of arrays

The unique labels for each level.

codessequence of arrays

Integers for each level designating which label at each location.

New in version 0.24.0.

sortorderoptional int

Level of sortedness (must be lexicographically sorted by that level).

namesoptional sequence of objects

Names for each of the index levels. (name is accepted for compat).

copybool, default False

Copy the meta-data.

verify_integritybool, default True

Check that the levels/codes are consistent and valid.

See also

MultiIndex.from_arrays

Convert list of arrays to MultiIndex.

MultiIndex.from_product

Create a MultiIndex from the cartesian product of iterables.

MultiIndex.from_tuples

Convert list of tuples to a MultiIndex.

MultiIndex.from_frame

Make a MultiIndex from a DataFrame.

Index

The base pandas Index type.

Notes

See the user guide for more.

Examples

A new MultiIndex is typically constructed using one of the helper methods MultiIndex.from_arrays(), MultiIndex.from_product() and MultiIndex.from_tuples(). For example (using .from_arrays):

>>> arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]
>>> pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))
MultiIndex([(1,  'red'),
            (1, 'blue'),
            (2,  'red'),
            (2, 'blue')],
           names=['number', 'color'])

See further examples for how to construct a MultiIndex in the doc strings of the mentioned helper methods.

Attributes

names

Names of levels in MultiIndex.

nlevels

Integer number of levels in this MultiIndex.

levshape

A tuple with the length of each level.

levels

codes

Methods

from_arrays(arrays[, sortorder, names])

Convert arrays to MultiIndex.

from_tuples(tuples[, sortorder, names])

Convert list of tuples to MultiIndex.

from_product(iterables[, sortorder, names])

Make a MultiIndex from the cartesian product of multiple iterables.

from_frame(df[, sortorder, names])

Make a MultiIndex from a DataFrame.

set_levels(levels[, level, inplace, …])

Set new levels on MultiIndex.

set_codes(codes[, level, inplace, …])

Set new codes on MultiIndex.

to_frame([index, name])

Create a DataFrame with the levels of the MultiIndex as columns.

to_flat_index()

Convert a MultiIndex to an Index of Tuples containing the level values.

is_lexsorted()

Return True if the codes are lexicographically sorted.

sortlevel([level, ascending, sort_remaining])

Sort MultiIndex at the requested level.

droplevel([level])

Return index with requested level(s) removed.

swaplevel([i, j])

Swap level i with level j.

reorder_levels(order)

Rearrange levels using input order.

remove_unused_levels()

Create new MultiIndex from current that removes unused levels.

get_locs(seq)

Get location for a sequence of labels.