def unpivot(frame):"""渡されたDFのIndexとColumnsを値とともに列方向に並べる。"""N, K = frame.shapedata = {"value": frame.to_numpy().ravel("F"),"variable": np.asarray(frame.columns).repeat(N),"date": np.tile(np.asarray(frame.index), K),}return pd.DataFrame(data, columns=["date", "variable", "value"])df = tm.makeTimeDataFrame(3)df = unpivot(df)df

pivoted = df.pivot(index="date", columns="variable", values="value") #上記定義関数の逆操作
pivoted
