import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# サンプルを作ります。
dframe1 = DataFrame(np.arange(8).reshape((2, 4)),
index=pd.Index(['LA', 'SF'], name='city'),
columns=pd.Index(['A', 'B', 'C','D'], name='letter'))
dframe1
# stackを使うと、列名をindexにしてSeriesが作れます。
dframe_st = dframe1.stack()
type(dframe_st)
dframe_st
# unstackを使うと、元にもどります。
dframe_st.unstack()
#レベルを選べます。
dframe_st.unstack(0)
# 名前の指定も可能です。
dframe_st.unstack('letter')
dframe_st.unstack('city')
# NaNの扱い
ser1 = Series([0, 1, 2], index=['Q', 'X', 'Y'])
ser2 = Series([4, 5, 6], index=['X', 'Y', 'Z'])
dframe = pd.concat([ser1, ser2], keys=['Alpha', 'Beta'])
dframe
# unstackでDataFrameができます。
dframe.unstack()
# stackは、デフォルトでNaNを取り除きます。
dframe.unstack().stack()
# この動きを抑制することもできます。
dframe.unstack().stack(dropna=False)