In [1]:
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
In [2]:
df1 = DataFrame(np.arange(8).reshape(2,4),
index=pd.Index(['LA','SF'],name='city'),
columns=pd.Index(['A','B','C','D'],name='letters'))
df1
Out[2]:
In [3]:
df_st = df1.stack()
df_st
Out[3]:
In [4]:
df_st.unstack()
Out[4]:
In [6]:
df_st.unstack('letters')
Out[6]:
In [7]:
df_st.unstack('city')
Out[7]:
In [8]:
# how to stack/unstack handle null values
ser1 = Series([0,1,2],index=['Q','X','Y'])
In [9]:
ser2 = Series([4,5,6],index=['X','Y','Z'])
In [10]:
ser1
Out[10]:
In [11]:
ser2
Out[11]:
In [12]:
df = pd.concat([ser1,ser2], keys=['Alpha','Bravo'])
df
Out[12]:
In [13]:
df.unstack()
Out[13]:
In [15]:
# remove null values while stacking
df.unstack().stack()
Out[15]:
In [16]:
# keep null values while stacking
df.unstack().stack(dropna=False)
Out[16]:
In [ ]: