2017-07-10 5 views
2

をリシェイプ私はそれが日付(2015-08-012015-08-022015-08-03、など)によってインデックス化され、このマルチインデックスパンダのデータフレーム

ID   I     II     III 
METRIC  a b c d a b c d a b c d 
2015-08-01 0 1 2 3 20 21 22 23 40 41 42 43 
2015-08-02 4 5 6 7 24 25 26 27 44 45 46 47 
2015-08-03 8 9 10 11 28 29 30 31 48 49 50 51 

、最初のレベルの列のように見えるマルチインデックスパンダのデータフレーム(Iを持っています、II,III)はIDsであり、第2レベルの列はMETRICs(a,b,c,d)である。私は(失敗した).pivot.stack、および.meltを使用してに見ている以下の

METRIC    a b c d 
ID 
I  2015-08-01 0 1 2 3 
     2015-08-02 4 5 6 7 
     2015-08-03 8 9 10 11 
II  2015-08-01 20 21 22 23 
     2015-08-02 24 25 26 27 
     2015-08-03 28 29 30 31 
III 2015-08-01 40 41 42 43 
     2015-08-02 44 45 46 47 
     2015-08-03 48 49 50 51 

にそれを再構築したいと思いますが、彼らは私が探しています何を私に与えていません。私は現在、IDをループし、リストのデータフレームとconcatのデータフレームを一緒に作成して、私が望むものを得ることができます。

ご意見をいただければ幸いです。

答えて

4

のはstackswaplevelsort_indexを使用してみましょう:

df.stack(0).swaplevel(0,1).sort_index() 

は出力:

METRIC   a b c d 
ID        
I 2015-08-01 0 1 2 3 
    2015-08-02 4 5 6 7 
    2015-08-03 8 9 10 11 
II 2015-08-01 20 21 22 23 
    2015-08-02 24 25 26 27 
    2015-08-03 28 29 30 31 
III 2015-08-01 40 41 42 43 
    2015-08-02 44 45 46 47 
    2015-08-03 48 49 50 51 
+0

シンプルでクリア!! – Wen

+0

@Wenはいそれは:-) – piRSquared

+0

@ piRSあまりにもあなたのものです!!! upvote – Wen

3

あなたはtransposeTはあなたのための作業の一部を任せることができます。

df.T.stack().unstack(1) 

METRIC   a b c d 
ID        
I 2015-08-01 0 1 2 3 
    2015-08-02 4 5 6 7 
    2015-08-03 8 9 10 11 
II 2015-08-01 20 21 22 23 
    2015-08-02 24 25 26 27 
    2015-08-03 28 29 30 31 
III 2015-08-01 40 41 42 43 
    2015-08-02 44 45 46 47 
    2015-08-03 48 49 50 51 
+0

こんにちは..私はここでTを使うのが好きです!ニース、Mr. piRSquared! +1 –

+0

!魔法の 'T'のためのupvote – Wen

+0

これはちょっと行列のようです....." ...それは曲がるスプーンではありません。それはあなた自身です。 " –

関連する問題