Prepend a level to a pandas MultiIndex

pandas, python

Solution

A nice way to do this in one line using `pandas.concat()`:

import pandas as pd

pd.concat([df], keys=['Foo'], names=['Firstlevel'])

An even shorter way:

pd.concat({'Foo': df}, names=['Firstlevel'])

This can be generalized to many data frames, see the docs.

Problem

I have a DataFrame with a MultiIndex created after some grouping: ``` import numpy as np import pandas as pd from numpy.random import randn df = pd.DataFrame({'A' : ['a1', 'a1', 'a2', 'a3'], 'B' : ['b1', 'b2', 'b3', 'b4'], 'Vals' : randn(4)} ).groupby(['A', 'B']).sum() # Vals # A B # a1 b1 -1.632460 # b2 0.596027 # a2 b3 -0.619130 # a3 b4 -0.002009 ``` How do I prepend a level to the MultiIndex so that I turn it into something like: ``` # Vals # FirstLevel A B # Foo a1 b1 -1.632460 # b2 0.596027 # a2 b3 -0.619130 # a3 b4 -0.002009 ```

Original source