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

In [2]:
dframe1 = DataFrame(np.arange(8).reshape(2,4), index = pd.Index(['LA', 'SF'], name='city'), columns = pd.Index(list('ABCD'), name='letter'))

In [3]:
dframe_st = dframe1.stack()
dframe_st


Out[3]:
city  letter
LA    A         0
      B         1
      C         2
      D         3
SF    A         4
      B         5
      C         6
      D         7
dtype: int64

In [4]:
dframe_st.unstack()


Out[4]:
letter A B C D
city
LA 0 1 2 3
SF 4 5 6 7

In [5]:
dframe_st.unstack('city')


Out[5]:
city LA SF
letter
A 0 4
B 1 5
C 2 6
D 3 7

In [6]:
ser1 = Series([0,1,2], index=list('QXY'))
ser2 = Series([4,5,6], index=list('XYZ'))

In [7]:
dframe = pd.concat([ser1, ser2], keys=['Alpha', 'Beta'])

dframe


Out[7]:
Alpha  Q    0
       X    1
       Y    2
Beta   X    4
       Y    5
       Z    6
dtype: int64

In [8]:
dframe.unstack()


Out[8]:
Q X Y Z
Alpha 0.0 1.0 2.0 NaN
Beta NaN 4.0 5.0 6.0

In [9]:
dframe.unstack().stack()


Out[9]:
Alpha  Q    0.0
       X    1.0
       Y    2.0
Beta   X    4.0
       Y    5.0
       Z    6.0
dtype: float64

In [10]:
dframe.unstack().stack(dropna=False)


Out[10]:
Alpha  Q    0.0
       X    1.0
       Y    2.0
       Z    NaN
Beta   Q    NaN
       X    4.0
       Y    5.0
       Z    6.0
dtype: float64

In [ ]: