In [1]:
import numpy as np 
import pandas as pd
from pandas import Series, DataFrame

from numpy.random import randn

In [2]:
ser = Series(randn(6), index=[[1,1,1,2,2,2],['a','b', 'c', 'a', 'b', 'c']])

In [3]:
ser


Out[3]:
1  a   -0.401895
   b   -1.151060
   c   -1.697435
2  a    1.774849
   b    0.841120
   c    0.378378
dtype: float64

In [4]:
ser[1]


Out[4]:
a   -0.401895
b   -1.151060
c   -1.697435
dtype: float64

In [5]:
ser[1]['a']


Out[5]:
-0.40189491297828905

In [6]:
ser[:,'a']


Out[6]:
1   -0.401895
2    1.774849
dtype: float64

In [7]:
dframe = ser.unstack()

In [8]:
dframe


Out[8]:
a b c
1 -0.401895 -1.15106 -1.697435
2 1.774849 0.84112 0.378378

In [10]:
dframe2 = DataFrame(np.arange(16).reshape(4,4), index=[['a','a','b','b'],[1,2,1,2]],
                   columns=[['NY', 'NY', 'LA', 'SF'], ['cold', 'hot', 'hot', 'cold']])

dframe2


Out[10]:
NY LA SF
cold hot hot cold
a 1 0 1 2 3
2 4 5 6 7
b 1 8 9 10 11
2 12 13 14 15

In [11]:
dframe2.index.names


Out[11]:
FrozenList([None, None])

In [12]:
dframe2.index.names  = ['INDEX_1', 'INDEX_2']

dframe2.columns.names = ['Cities', 'Temp']

dframe2


Out[12]:
Cities NY LA SF
Temp cold hot hot cold
INDEX_1 INDEX_2
a 1 0 1 2 3
2 4 5 6 7
b 1 8 9 10 11
2 12 13 14 15

In [13]:
dframe2.swaplevel('Cities','Temp', axis=1)


Out[13]:
Temp cold hot cold
Cities NY NY LA SF
INDEX_1 INDEX_2
a 1 0 1 2 3
2 4 5 6 7
b 1 8 9 10 11
2 12 13 14 15

In [14]:
dframe2.sortlevel(1)


Out[14]:
Cities NY LA SF
Temp cold hot hot cold
INDEX_1 INDEX_2
a 1 0 1 2 3
b 1 8 9 10 11
a 2 4 5 6 7
b 2 12 13 14 15

In [16]:
dframe2.swaplevel('Cities','Temp', axis=1).sortlevel(0, axis=1)


Out[16]:
Temp cold hot
Cities NY SF LA NY
INDEX_1 INDEX_2
a 1 0 3 2 1
2 4 7 6 5
b 1 8 11 10 9
2 12 15 14 13

In [ ]: