列をMultiIndexとして格納するメソッドにstackがある。
tuples = list(zip(*[["bar", "bar", "baz", "baz", "foo", "foo", "qux", "qux"], ["one", "two", "one", "two", "one", "two", "one", "two"],]))
index = pd.MultiIndex.from_tuples(tuples, names=["first", "second"])
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=["A", "B"])
df2 = df[:4]
df2
stack()メソッドを実行。カラムがないのでSeriesに変化
stacked = df2.stack()
stacked
unstack()で元に戻る。IndexとColumnsで縦持ち横持ちを自由に操作するイメージ
stacked.unstack()