2016-07-16 3 views
2

にパンダのデータフレームの特定の行を変換する私のDATAFRAMEです:私は「ID」という= 0レベルと「年でデータフレームのインデックスに「ID」と「年」の行を変換したいはここにマルチインデックス

  0  1  2 
0 0  0.0 20.0  NaN 
    1  1.0 21.0  NaN 
    2  2.0 22.0  NaN 
    ID  NaN NaN 11111.0 
    Year NaN NaN 2011.0 
1 0  3.0 23.0  NaN 
    1  4.0 24.0  NaN 
    2  5.0 25.0  NaN 
    3  6.0 26.0  NaN 
    ID  NaN NaN 11111.0 
    Year NaN NaN 2012.0 

'レベル= 1です。私はstack()を使ってみましたが、まだそれを理解することはできません。

編集:私の所望の出力は以下のようになります。

     0  1 
    11111 2011 0  0.0 20.0 
       1  1.0 21.0 
       2  2.0 22.0 
     2012 0  3.0 23.0 
       1  4.0 24.0 
       2  5.0 25.0 
       3  6.0 26.0 
+0

行のインデックスを?どの行?あなたはあなたの望む結果を見せることができますか? – ako

+0

データの論理は何ですか? 'ID'と' Year'は頻繁に繰り返されますか?それは常にそれが識別する行に従っていますか? – ako

+0

@ako:このような処理の必要性は、データフレーム上で行われた別の操作から生じました。この場合、列(0&1)には[20,21,22]のような積み重ねられたリスト値がありましたが、そのようにすると問題に言及される問題が生じました。 –

答えて

0

これは動作するはずです:

df1 = df.loc[pd.IndexSlice[:, ['ID', 'Year']], '2'] 
dfs = df1.unstack() 
dfi = df1.index 
dfn = df.drop(dfi).drop('2', axis=1).unstack() 

dfn.set_index([dfs.ID, dfs.Year]).stack() 

enter image description here

関連する問題