python 中如何使用多层索引?
1、导入工具包,并输入数据集。
import pandas as pd
df=pd.DataFrame({'name':['Lucy','Jack','Lily','Tom','Jim','Bob'],'age':[18,18,18,19,17,18],'grade':[1,2,3,4,5,6]})
Print(df)

2、定义多重索引。将name作为第一层索引、grade作为第二层索引。可以看到运行结果中的index部分已经发生变化。
df.index=[df['name'],df['grade']]
print(df)
Print(df.index)


3、自定义索引值。可以根据索引所在层级level或者索引名称来选择需要定义的索引。
df1=df.copy()
df1.index=df1.index.set_levels([6,5,4,3,2,1],level=1)
print(df1)
df1.index=df1.index.set_levels(['Lu','Ja','Li','To','Ji','Bo'],level='name')
print(df1)
可以看到运行结果中索引值发生了变化。


4、获取索引值。利用MultiIndex.to_frame函数将索引值作为数据的列字段使用。
df2=df.copy()
df2=df2.drop(['grade','name'],axis=1) #删除列
print(df2)
df2['name']=pd.MultiIndex.to_frame(df2.index)['name']
df2['grade']=pd.MultiIndex.to_frame(df2.index)['grade']
print(df2)


5、删除多重索引中的其中一层。level=0表示删除第一层,level=’name’,表示删除名为name的这一层索引。
df2.index=df2.index.droplevel(level=0)
Print(df2)

6、交换索引的层级。
df3=df.copy()
df3.index=df3.index.swaplevel()
df3
可以看到原来在第二层的grade现在到第一层了。
