Yawar - 1 year ago 186

Python Question

I have a DataFrame with a MultiIndex created after some grouping:

`import numpy as np`

import pandas as p

from numpy.random import randn

df = p.DataFrame({

'A' : ['a1', 'a1', 'a2', 'a3']

, 'B' : ['b1', 'b2', 'b3', 'b4']

, 'Vals' : randn(4)

}).groupby(['A', 'B']).sum()

df

Output> Vals

Output> A B

Output> a1 b1 -1.632460

Output> b2 0.596027

Output> a2 b3 -0.619130

Output> a3 b4 -0.002009

How do I prepend a level to the MultiIndex so that I turn it into something like:

`Output> Vals`

Output> FirstLevel A B

Output> Foo a1 b1 -1.632460

Output> b2 0.596027

Output> a2 b3 -0.619130

Output> a3 b4 -0.002009

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

You can first add it as a normal column and then append it to the current index, so:

```
df['Firstlevel'] = 'Foo'
df.set_index('Firstlevel', append=True, inplace=True)
```

And change the order if needed with:

```
df.reorder_levels(['Firstlevel', 'A', 'B'])
```

Which results in:

```
Vals
Firstlevel A B
Foo a1 b1 0.871563
b2 0.494001
a2 b3 -0.167811
a3 b4 -1.353409
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**