Pandas层级索引
时间: 2025-01-03 08:14:07 浏览: 7
### Pandas 多级索引使用方法教程
#### 创建多级索引对象
Pandas 提供了 `MultiIndex` 类型来处理多级索引的问题[^1]。下面是一个简单的例子展示如何创建一个多级索引的对象:
```python
import numpy as np
import pandas as pd
index = [('California', 2000), ('California', 2010),
('New York', 2000), ('New York', 2010),
('Texas', 2000), ('Texas', 2010)]
populations = [33871648, 37253956,
18976457, 19378102,
20851820, 25145561]
# 构建Series并设置其索引为上述定义的元组列表形式
pop = pd.Series(populations, index=pd.MultiIndex.from_tuples(index))
print(pop)
```
这段代码会输出如下所示的结果,其中包含了两个级别的索引——州名和年份。
#### 切片查询操作
对于带有多个层次结构的数据集来说,可以利用这些额外的信息来进行更精确的选择。例如,要获取特定时间段内的记录,可以通过指定起始位置到结束位置之间的范围实现切片查询功能[^2]:
```python
# 查询从(California, 2010)至(Texas, 2000)之间所有的条目
slice_result = pop[('California', 2010):('Texas', 2000)]
print(slice_result)
# 获取所有2010年的数据项
year_2010_data = pop[pd.IndexSlice[:, 2010]]
print(year_2010_data)
```
这里展示了两种不同的方式来做筛选:一种是指定确切的位置区间;另一种则是通过 `pd.IndexSlice[]` 来选取某一层上的固定值作为条件。
#### 访问单层或多层标签
当需要单独访问某个级别中的唯一标识符时,可调用 `.get_level_values()` 方法,并传入相应的 level 参数值(即第几层),从而返回该层内全部唯一的标记集合[^3]:
```python
df = pop.unstack() # 将 Series 转换为 DataFrame 形式以便更好地理解 get_level_values 的作用
state_labels = df.index.get_level_values(0).unique()
years = df.columns.get_level_values(0).unique()
print(f'State Labels:\n{state_labels}\n')
print(f'Years:\n{years}')
```
此部分代码先将原始序列转换成了表格视图,再分别提取出行方向上的一级分类以及列方向上的时间戳信息。
阅读全文