将索引转换为多级索引(层次化索引)
在本文中,我们将介绍如何将 Pandas 中的单级索引转换为多级索引,也被称为层次化索引。这个过程也称为在 Pandas 中创建一个多级索引。多级索引是一种有助于处理多维数据的工具。
阅读更多:Pandas 教程
什么是多级索引?为什么要使用多级索引?
多级索引是指每个行或列都有多个索引的数据结构,这种数据结构更适合在多维数据分析时使用。例如,在以下图表中:
| Animal | Age | Speed |
|---|---|---|
| Lion | 3 | 80 |
| Lion | 4 | 78 |
| Lion | 5 | 85 |
| Tiger | 2 | 72 |
| Tiger | 3 | 70 |
| Tiger | 4 | 73 |
我们可以看到,相同的动物在不同的年龄下具有不同的速度。而且,Lion 和 Tiger 是不同的动物,但它们共享年龄-速度数据。如果我们使用 Pandas 将这个表格转换为 DataFrame,它将具有以下索引:
- Animal
- Age
- Speed
但是,如果我们在索引上设置多个列,我们可以将数据分组,这样就更容易分析数据。例如,如果我们将 Age 添加到 Animal 和 Speed 索引中,我们将得到以下表格:
| Animal | Age | Speed |
|---|---|---|
| Lion | 3 | 80 |
| 4 | 78 | |
| 5 | 85 | |
| Tiger | 2 | 72 |
| 3 | 70 | |
| 4 | 73 |
现在我们可以通过 Lion 或 Tiger 进行索引,并根据它们的年龄和速度来选择一组数据。多级索引的另一个应用是在时间序列数据中,其中日期是一个主要的索引列,但仍需要其他的索引来分组数据。
如何将单级索引转换为多级索引?
首先,让我们创建一个 Pandas DataFrame:
import pandas as pd
data = pd.DataFrame({'Animal': ['Lion', 'Lion', 'Tiger', 'Tiger'],
'Age': [3, 4, 2, 3],
'Speed': [80, 78, 72, 70]})
现在,我们来创建层次化索引。我们可以通过将索引列作为列表传递给 .set_index() 函数,来将一个或多个索引列转换为 DataFrame 的多级索引。例如,以下代码将 Animal 和 Age 列转换为多级索引:
data.set_index(['Animal', 'Age'], inplace=True)
print(data)
输出结果如下所示:
Speed
Animal Age
Lion 3 80
4 78
Tiger 2 72
3 70
可以看到,现在 Animal 和 Age 列是 DataFrame 的索引列。我们可以在这两个列中进行切片,我们也可以使用 .loc[] 函数来选择数据,例如选择所有 Lion 数据:
print(data.loc['Lion'])
输出结果如下所示:
Speed
Age
3 80
4 78
总结
在本文中,我们学习了 Pandas 中如何将单级索引转换为多级索引。层次化索引允许我们将数据分组并轻松引用,从而更容易进行多维数据分析。
极客教程