将索引转换为多级索引(层次化索引)
在本文中,我们将介绍如何将 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:
现在,我们来创建层次化索引。我们可以通过将索引列作为列表传递给 .set_index()
函数,来将一个或多个索引列转换为 DataFrame 的多级索引。例如,以下代码将 Animal 和 Age 列转换为多级索引:
输出结果如下所示:
可以看到,现在 Animal 和 Age 列是 DataFrame 的索引列。我们可以在这两个列中进行切片,我们也可以使用 .loc[]
函数来选择数据,例如选择所有 Lion 数据:
输出结果如下所示:
总结
在本文中,我们学习了 Pandas 中如何将单级索引转换为多级索引。层次化索引允许我们将数据分组并轻松引用,从而更容易进行多维数据分析。