📅  最后修改于: 2023-12-03 15:26:07.713000             🧑  作者: Mango
在 Pandas 中,我们可以通过设置多级索引(MultiIndex)来为数据帧增加多个维度。这使得我们可以方便地对数据进行多维度查询和分析。本文将介绍如何在多级索引下进行数据帧的查询操作。
首先,我们需要了解如何设置数据帧的多级索引。下面是一个样例数据:
import pandas as pd
data = {
'class': ['A', 'A', 'B', 'B', 'B'],
'name': ['Alice', 'Bob', 'Cathy', 'David', 'Eva'],
'score': [80, 90, 85, 70, 95]
}
df = pd.DataFrame(data)
print(df)
输出:
class name score
0 A Alice 80
1 A Bob 90
2 B Cathy 85
3 B David 70
4 B Eva 95
我们可以将 'class' 和 'name' 作为索引列,如下所示:
df = df.set_index(['class', 'name'])
print(df)
输出:
score
class name
A Alice 80
Bob 90
B Cathy 85
David 70
Eva 95
此时,数据帧 df 的索引由两层组成。
我们可以利用 loc 方法对多级索引的数据帧进行查询。例如,查询 'class' 是 'B'、'name' 是 'Cathy' 的学生的成绩:
print(df.loc[('B', 'Cathy'), 'score'])
输出:
85
我们也可以使用 xs 方法对多级索引进行查询,该方法可以更加方便地查询某一特定维度的数据。例如,查询 'class' 是 'B' 的学生的成绩:
print(df.xs('B', level='class')['score'])
输出:
name
Cathy 85
David 70
Eva 95
Name: score, dtype: int64
注意到 xs 的第二个参数表示查询的级别是 'class',因此我们可以直接使用方括号访问 'score' 列,而不需要再使用 loc 方法。
对于比较复杂的条件查询,我们可以使用 query 方法。例如,查询所有分数大于等于 80 分的学生:
print(df.query('score >= 80'))
输出:
score
class name
A Alice 80
Bob 90
B Cathy 85
B Eva 95
本文介绍了在 Pandas 中利用多级索引对数据帧进行查询的方法。我们可以使用 loc 方法、xs 方法以及 query 方法来实现不同层次的查询操作。多级索引能够为我们提供更加灵活的数据查询与分析方式,是 Pandas 中一个非常重要的概念。