一、创建series多层索引
import pandas as pd
data=[1,2,3,4,5,6]
index={
['张三','张三','李四','李四','王五','王五'],
['期中','期末',['期中','期末',['期中','期末']
}
series=pd.Series(data=data,index=index)
二、numpy创建随机数
import numpy as np
data=np.random.randint(0,100,size=(6,3)) #第一个参数为起始值,第二个参数为结束值,第三个参数为行列数,格式size=(行数,列数)
三、繁琐方法创建DataFrame多重索引
import pandas as pd
import numpy as np
data=np.random.randint(0,100,size=(6,3))
index=[
['张三','张三','李四','李四','王五','王五'],
['期中','期末',['期中','期末',['期中','期末']
]
columns=['java','web','Python']
df=pd.DataFrame(data=data,index=index,columns=columns)
四、简便方法创建DataFrame多重索引
import pandas as pd
import numpy as np
data=np.random.randint(0,100,size=(6,3))
names= ['张三','李四',,'王五']
exams= ['期中','期末']
columns=['java','web','Python']
index=pd.MultiIndex.from_product(names,exams) #names 和exams的位置决定了索引的层级,左为1级,右边递增。
df=pd.DataFrame(data=data,index=index,columns=columns)
五、Series 取值
1、列表取值,只能从左到右一层一层取值,不能直接取右边的值。
Series['张三']
Series['李四']
Series['张三','期中']
Series['张三','期末']
Series[:,'期中'] #切片取值法用:取值外层全部,可以取出内层值。
Series[:,'期末'] #切片取值法用:取值外层全部,可以取出内层值。
2、.loc()方法取值
Series.loc(:,'期中')
Series.loc(:,'期末')
六、DataFrame多层索引
1、使用行标签索引loc()方法,行位置索引不受多层索引影响。
df.loc['张三','期中']
df.loc['张三','期末']
df.loc['张三'].loc['期末']
df.loc['张三'].loc['期中']
df.loc[('张三','期中'),:]
df.loc[('张三','期末'),:]
2、无法对二级索引直接取值,可以用:切片索引一级索引后,间接把二级索引变为一级再取值
七、多层索引排序
1、sort_index()默认每一层索引都按升序排列
df.sort_index()
2、优先根据第一层索引排序
df.sort_index(level=0,ascending=False)
3、优先根据第二层索引排序
df.sort_index(level=1,ascending=False)