我的数据框有四列:
df = pd.DataFrame({'name': {1:'Aaron', 2:'Bobby', 3:'Carl'},
'job': {1:'mechanic', 2:'carpenter', 3:'plumber'},
'experience': {1:12, 2:23, 3:14},
'type': {1:'owner',2:'contractor',3:'assistant'}},
columns=['name','job','experience','type'])
df
我想使用pandas重塑数据,以便names
为索引,job
为列标题,experience
和type
为子标题列 - 即在mechanic
列下,会有experience
和type
的子列,carpenter
列下的相同列,等等。 / p>
我尝试过使用
df.set_index(['name', 'job']).unstack('job')
但是experience
和type
是最高级别而不是job
。有没有办法可以更改此设置以使job
成为列标题的顶级?
感谢您的帮助!
答案 0 :(得分:4)
您可以使用MultiIndex.swaplevel
:
df.columns = df.columns.swaplevel(0,1)
print (df)
job carpenter mechanic plumber carpenter mechanic plumber
experience experience experience type type type
name
Aaron NaN 12.0 NaN None owner None
Bobby 23.0 NaN NaN contractor None None
Carl NaN NaN 14.0 None None assistant