【毎日Python】Pythonで横持ちデータと縦持ちデータの整形|DataFrame.stack/unstack

stack
毎日Python/こつこつPython
import pandas as pd

Pythonで横持ちのデータを縦持ちに、縦持ちのデータを横持ちに整形する方法です。
使用するのは、Pythonのpandasライブラリの、stackメソッドとunstackメソッドです。
横持ちとは、項目が増えたときに横に増えるデータ構造のことで、縦に増えるデータ構造を縦持ちと言います。

df = pd.read_csv('./sample.csv')
df.head()

このような横持ちのデータフレームを用意します。
stackメソッドを使用してみましょう。
列だったラベルが行に追加され、縦持ちのデータに整形されました。
また、インデックスが階層化され、マルチインデックス型であることが確認できます。

a = df.stack()
a.head(10)

次に、縦持ちのデータを横持ちに整形してみましょう。
先ほど縦持ちにしたデータフレームに、unstackメソッドを使用します。
内側のインデックスがカラムとなり、元の状態に戻すことができました。

b = a.unstack()
b.head()

関連メソッド

【毎日Python】Pythonでデータフレームを縦持ちデータから横持ちに整形する方法|pandas.pivot

【毎日Python】Pythonで横持ちのデータを縦持ちに整形する方法|pandas.melt