任务描述
本关任务:根据相关知识以及编程要求,得到目标DataFrame
多级索引。
相关知识
创建多级索引
-
通过
MultiIndex
构建多级索引:index = [('California', 2000), ('California', 2010), ('New York', 2000), ('New York', 2010), ('Texas', 2000), ('Texas', 2010)]
populations = [33871648, 37253956, 18976457, 19378102, 20851820, 25145561]
pop = pd.Series(populations, index=index)
# 1.基于元组创建
index1 = pd.MultiIndex.from_tuples(index)
index1
Out:
MultiIndex(levels=[['California', 'New York', 'Texas'], [2000, 2010]], codes=[[0, 0, 1, 1, 2, 2], [0, 1, 0, 1, 0, 1]])
MultiIndex
里面有一个levels
属性表示索引的等级——这样做可以将州名和年份作为每个数据点的不同标签。如果将前面创建的pop
的索引重置(reindex)
为MultiIndex
,就会看到层级索引。其中前两列表示Series
的多级索引值,第三列式数据。pop1 = pop.reindex(index1)
pop1
Out:
California 2000 33871648
2010 37253956
New York 2000 18976457
2010 19378102
Texas 2000 20851820
2010 25145561
dtype: int64
查询
2010
年的数据。pop[:, 2010] # 得到的是一个单索引数组
Out:
California 37253956
New York 19378102
Texas 25145561
dtype: int64
以上的例子都是
Series
创建多级行索引,而每个DataFrame
的行与列都是对称的,也就是说既然有多级行索引,那么同样可以有多级列索引。只需要在创建DataFrame
时将columns
的参数传入一个MultiIndex
。 -
通过二维索引数组创建多级索引:
Series
或DataFrame
创建多级索引最直接的办法就是将index</