我有一个看起来像这样的数据框:
column1 column2 column3 column4
P1 D1 T1 1.0
P1 D1 T2 2.0
P1 D2 T1 3.0
P1 D2 T2 4.0
P2 D1 T1 5.0
P2 D1 T2 6.0
P2 D2 T1 7.0
P2 D2 T2 8.0
我想用column2和column3中的值对列进行多索引。看起来应该像这样
column1 column4
D1 D2
T1 T2 T1 T2
P1 1.0 2.0 3.0 4.0
P2 5.0 6.0 7.0 8.0
答案 0 :(得分:1)
我相信您需要DataFrame.set_index
和Series.unstack
:
df = df.set_index(['column1','column2','column3'])['column4'].unstack([1,2])
print (df)
column2 D1 D2
column3 T1 T2 T1 T2
column1
P1 1.0 2.0 3.0 4.0
P2 5.0 6.0 7.0 8.0
如果需要MultiIndex
来column4
的顶级,请删除column4
并使用DataFrame.unstack
:
df = df.set_index(['column1','column2','column3']).unstack([1,2])
print (df)
column4
column2 D1 D2
column3 T1 T2 T1 T2
column1
P1 1.0 2.0 3.0 4.0
P2 5.0 6.0 7.0 8.0