对于一个DataFrame,df,有时候我们需要把df的两个或多列设为这个df的层次索引,但是同时又希望保留这两列,这时要避免直接用df.index=df[['a','b']]这样的方式,因为这样赋值之后,df的index并不是一个层次索引,而是以列'a','b'组成的元组构成的单层次索引。要实现这样的多层次索引,有以下几种方式:
1、df.set_index(['a','b'],drop=False,inpalce=True)
2、df.index=df.set_index(['a','b']).index
3、df.index=pd.MultiIndex.from_frame(df[['a','b']],names=('new_a','new_b'))