Python Pandas – 以多索引的形式显示数据框的索引

Python Pandas – 以多索引的形式显示数据框的索引

Python Pandas中,我们通常使用DataFrame来存储和处理数据集。其中,索引是数据的重要组成部分,它有助于我们查找和操作数据。在某些情况下,当我们有多个有序数据集合并时,我们需要使用多维索引(MultiIndex),也就是常说的多层索引,它可以让我们更方便的查找数据子集。

本文将介绍如何使用Python Pandas中的MultiIndex类创建多层索引,并以多索引的形式显示数据框的索引。

更多Pandas相关文章,请阅读:Pandas 教程

创建多层索引

首先,我们需要创建一个包含多层索引的数据框。这可以通过设置列名和行名来实现。下面是一个简单的例子:

import pandas as pd

data = [['John', 'M', 22], ['John', 'M', 35], ['Lisa', 'F', 20], ['Lisa', 'F', 30]]
df = pd.DataFrame(data, columns=['Name', 'Gender', 'Age'])
df.set_index(['Name', 'Gender'], inplace=True)
print(df)

输出结果如下:

              Age
Name Gender      
John M         22
     M         35
Lisa F         20
     F         30

这里我们使用了set_index函数设置多层索引,第一个参数传入的是列名的列表,inplace=True表示让设置生效,即原来的数据框将被替换。

可以看到,数据框的索引变成了多层索引,其中第一层索引是Name,第二层索引是Gender,同时,Age变成了列名。

我们可以使用index属性检索数据框的索引,例如:

print(df.index)

输出结果如下:

MultiIndex([( 'John', 'M'),
            ( 'John', 'M'),
            ('Lisa', 'F'),
            ('Lisa', 'F')],
           names=['Name', 'Gender'])

可以看到,我们得到了一个多维索引,其中第一维是Name,第二维是Gender。

显示多层索引

当数据框的索引变成多层索引后,我们可以看到每个层级的索引标签是平铺在一起的,像这样:

    Name Gender
0   John      M
1   John      M
2   Lisa      F
3   Lisa      F

但是,多层索引在数据分析和可视化时非常有用,因此我们需要以嵌套形式显示索引标签。

我们可以使用df.index.names函数获取多层索引的名称,然后使用pd.MultiIndex函数创建一个新的MultiIndex,将多层索引的名称赋值给它,然后使用set_index函数重新设置数据框的索引。下面是一个例子:

df.index.names = ['Name', 'Gender']
new_index = pd.MultiIndex.from_tuples(df.index)
df.set_index(new_index, inplace=True)

print(df)

输出结果如下:

             Age
Name Gender     
John M        22
     M        35
Lisa F        20
     F        30

我们可以看到,数据框的索引以结构化的形式显示,每个层级的索引标签都是以嵌套的形式出现的。

索引的查询与切片

一旦我们创建了多层索引,我们可以通过多层索引查询数据。例如,我们可以使用以下代码查询所有性别为’F’的人:

print(df.loc[(slice(None), 'F'), :])

输出结果如下:

             Age
Name Gender     
Lisa F        20
     F        30

可以看到,我们使用slice(None)来选择所有的Name,然后选择Gender为’F’的行。

我们还可以使用数字索引来选择数据,例如,我们可以使用以下代码查询第一位的人的信息:

print(df.iloc[0])

输出结果如下:

Age    22
Name: (John, M), dtype: int64

可以看到,我们成功地选择了第一位的人的信息。

结论

在Python Pandas中,我们可以使用MultiIndex类来创建多层索引,以方便我们查找和操作数据。我们可以使用set_index函数设置多层索引,并使用pd.MultiIndex函数以适当的方式显示索引。我们还可以使用数字索引和多层索引的组合来查询数据框中的数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Pandas 教程