开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第27天,点击查看活动详情
多层索引
多层索引的创建
import pandas as pd
s = pd.Series([1,2,3,4,5,6],index=[['张三','张三','李四','李四','王五','王五'],
['期中','期末','期中','期末','期中','期末']])
# 张三一列是数据的第一层索引,期中一列是数据的第二层索引,而第二层索引值是和数据一一对应的。
print(s)
多层索引展示:
张三那一列是数据的第一层索引,期中的那一列数据是第二层索引,第二层索引值是和数据一一对应的。
创建多层索引表格:
用 numpy 中的随机模块创建出随机的成绩。data = np.random.randint(0,100,size=(6,3))
- 使用 numpy 中的随机模块中的生成随机整数方法
randint,里面的参数 size() 是指定生成6行3列的数据,每个数字范围在0~100之间
那么有随机生成浮点数的方法吗?去博客查了一下,numpy 没有专门的函数做这个浮点数随机生成,所以可以自己自定义一个函数:
import numpy as np
def randfloat(num,l,h):
if l >h:
return None
else:
a = h - l
b = h - a
out = (np.random.rand(num)*a+b).tolist()
out = np.array(out)
return out
data = randfloat(num = 200,l=3,h=6)
data
创建多层索引
方法一:
import pandas as pd
import numpy as np
data = np.random.randint(0,100,size = (6,3))
df = pd.DataFrame(data,index=[['朱一龙','朱一龙','黄宗泽','黄宗泽','王嘉尔','王嘉尔'],
['电影','综艺','电影','综艺','电影','综艺']],
columns=['得分1','得分2','得分3'])
df
方法二:
使用 pandas 的pd.MultiIndex.from_product()
pd.MultiIndex.from_product()构建索引的方式好理解一点
首先,确定每一层索引的值什么,然后以列表的形势传给from_product()方法即可
data = np.random.randint(0,100,size=(6,3))
names = ['小麦','明明','阮茹']
exam = ['期中','期末']
index = pd.MultiIndex.from_product([names,exam])# 括号中列表的位置会对最终的索引产生影响。第一个列表中元素将是最外层索引。
df = pd.DataFrame(data,index=index,columns=['形体','声乐','美术'])
df
注意:[names,exam]列表中的位置不同,产生的索引也会不同。
data = np.random.randint(0,100,size=(6,3))
names = ['张三','李四','王五']
exam = ['期中','期末']
index = pd.MultiIndex.from_product([names,exam]) # 确定每一层索引的值,以列表的形势传给from_product()方法。
# 括号中列表的位置会对最终的索引产生影响。第一个列表中元素将是最外层索引。
df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])
df
规律:
-
pd.MultiIndex.from_product([names,exam])会将列表中第一个元素作为最外层索引,依次类推 -
列表中元素值得对应关系如图: