2017-02-07 9 views
2

複数のインデックスに変換するのはかなり簡単かもしれませんが、私はそれを回避することができませんでした。私は以下のデータフレームを複数のインデックスに変換したいと思います。データフレームを複数のインデックスデータフレームに変換する

私の入力データフレーム:

mydf= pd.DataFrame({'id':['dataid1','dataid2','dataid1','dataid1','dataid2'],'Ref':['Ref1','Ref2','Ref3','Ref4','Ref5'],'Val1':[0.7,0.5,0.8,9.0,1],'Val2':[7,8,9,1.1,2]}) 
mydf= mydf.set_index('id') 

      Ref Val1 Val2 
id      
dataid1 Ref1 0.7 7.0 
dataid2 Ref2 0.5 8.0 
dataid1 Ref3 0.8 9.0 
dataid1 Ref4 9.0 1.1 
dataid2 Ref5 1.0 2.0 

理想のデータフレーム:

dataid1  dataid2 
Ref Val1 Val2 Ref Val1 Val2 
Ref1 0.7 7.0 Ref2 0.5 8.0 
Ref3 0.8 9.0 Ref5 1.0 2.0 
Ref4 9.0 1.1 

答えて

4

はあなたがunstack/pivotを行い、その後、異なるIDからの行の間の対応関係を示すためにrowid列を作ることができます。

(mydf.assign(rowid = mydf.groupby('id').cumcount()) 
    .set_index(['id', 'rowid']).unstack(level=0) 
    .swaplevel(axis=1).sort_index(axis=1)) 

enter image description here

関連する問題