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
函数以适当的方式显示索引。我们还可以使用数字索引和多层索引的组合来查询数据框中的数据。