将数据框转换为多个索引数据框

时间:2017-02-07 20:20:52

标签: python pandas

转换为多个索引可能相当容易,但我无法理解它。我有以下数据帧,我想转换为多个索引。

我的输入数据框:

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

1 个答案:

答案 0 :(得分:4)

您可以创建rowid列以指示来自不同ID的行之间的对应关系,然后执行unstack/pivot

(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