将索引转换为多级索引(层次化索引)

将索引转换为多级索引(层次化索引)

在本文中,我们将介绍如何将 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]})
Python

现在,我们来创建层次化索引。我们可以通过将索引列作为列表传递给 .set_index() 函数,来将一个或多个索引列转换为 DataFrame 的多级索引。例如,以下代码将 Animal 和 Age 列转换为多级索引:

data.set_index(['Animal', 'Age'], inplace=True)
print(data)
Python

输出结果如下所示:

           Speed
Animal Age       
Lion   3      80
       4      78
Tiger  2      72
       3      70
Python

可以看到,现在 Animal 和 Age 列是 DataFrame 的索引列。我们可以在这两个列中进行切片,我们也可以使用 .loc[] 函数来选择数据,例如选择所有 Lion 数据:

print(data.loc['Lion'])
Python

输出结果如下所示:

     Speed
Age       
3       80
4       78
Python

总结

在本文中,我们学习了 Pandas 中如何将单级索引转换为多级索引。层次化索引允许我们将数据分组并轻松引用,从而更容易进行多维数据分析。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册