マトリクス表の整然データ化
解決したいこと
初歩的な質問で恐縮なのですが、元のエクセルが図1のようになっており、非常に扱いづらいです。
図2のような整然データにしたいのですが、何かいい関数や方法などはないでしょうか?
※頭文字のアルファベットは外せなくてもいいです。
図1 元データ
図2 作りたい整然データ
自分で試したこと
・for文を使って、一個ずつ処理
D3には「Aネズミ」が入っていて、そのインデックスは1/1、項目はは草食&午後・・・という風に拾っていけそうではあったのですが、
間違いなくもっといい方法があるだろう思い質問させていただきました。
・形状的にピボットテーブルに近かったので、pd.meltでの逆変換
⇨ダメでした。形がピボットテーブルっぽいだけで、ピボットテーブルではない。
・meshgrid関数を使う(https://spcx8.hatenablog.com/entry/2018/09/16/222941)
⇨動かない。データフレーム型に適用できないと出ました。
meshグリッドでエラーの起きたときのプログラム
wb=pd.read_excel("/Book1.xlsx")
rows,cols = wb.meshgrid(range(mat.shape[0]),range(mat.shape[1]),indexing='ij')
df = pd.DataFrame()
df['row'] = rows.flatten()
df['col'] = cols.flatten()
df['val'] = mat.flatten()
追加項目
@nkay様の提案手法
df = pd.read_excel("test.xlsx", header=[0, 1], index_col=[0, 1])
df2=df.stack([0, 1])
df2.to_excel("output.xlsx")
0