Pandas 如何在 MultiIndex 索引中查询列值

Pandas 如何在 MultiIndex 索引中查询列值

在本文中,我们将介绍如何在 Pandas 的 MultiIndex 索引中查询列值。MultiIndex 索引是 Pandas 中的一种高级索引技术,它允许在一个表格或 DataFrame 中使用多个索引级别。使用 MultiIndex 索引,您可以轻松地跨多个索引级别进行数据筛选、重塑和数据透视。

对于 MultiIndex 索引,我们通常使用 pd.MultiIndex.from_arrayspd.MultiIndex.from_tuplespd.MultiIndex.from_product 等函数来构建 MultiIndex 对象。其中 pd.MultiIndex.from_product 函数将多个数组的笛卡尔积作为多层索引,如下所示:

import pandas as pd

df = pd.DataFrame({'key1': ['A', 'A', 'B', 'B', 'C', 'C'],
                   'key2': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
                   'data': [1, 2, 3, 4, 5, 6]})

multi_index = pd.MultiIndex.from_product([df['key1'].unique(), df['key2'].unique()], names=['key1', 'key2'])
df = df.set_index(['key1', 'key2']).reindex(multi_index)
Python

这段代码将 DataFrame 创建为:

          data
key1 key2     
A    X      1
     Y      2
B    X      3
     Y      4
C    X      5
     Y      6
Python

现在我们来看看如何在 MultiIndex 索引中进行查询。

阅读更多:Pandas 教程

使用 loc 或索引方法查询

在 MultiIndex 索引中,您可以使用 loc 或其他索引方法来查询列值。例如,如果您想获取索引为 BY 的行的所有列的值,可以使用以下代码:

print(df.loc[('B', 'Y')])
Python

输出:

data    4
Name: (B, Y), dtype: int64
Python

如果您只需要获取某列的值,可以使用以下代码:

print(df.loc[('B', 'Y'), 'data'])
Python

输出:

4
Python

使用 xs 方法查询

除了使用 loc 或其他索引方法以外,您还可以使用 Pandas 中的 xs(cross-section)方法来查询跨越多个层级的数据。xs 方法将从索引的指定级别返回交叉部分,如下所示:

print(df.xs('Y', level='key2'))
Python

输出:

      data
key1      
A         2
B         4
C         6
Python

使用 xs 方法查询多个交叉部分

如果您需要同时查询多个交叉部分,则可以传递一个元组的列表。例如,如果您想获取 key1 列为 ACkey2 列为 Y 的行的所有列的值:

print(df.xs(('A', 'C'), level='key1'))
Python

输出:

     data
key2     
X       1
Y       2
Python

这个方法的优势在于您可以传递一个元组来指定任意数量的层级,而不仅仅是两个层级。

使用 Query 方法查询

Pandas 还通过 query 方法提供了一种检索多个层级的快捷方式。该方法接收一个查询字符串,查询字符串中使用 @ 符号指代索引的级别,示例如下:

print(df.query("key1 == 'B' and key2 == 'Y'"))
Python

输出:

          data
key1 key2     
B    Y       4
Python

总结

在本文中,我们介绍了几种在 Pandas MultiIndex 索引中查询列值的方法。使用以上方法,您可以轻松地筛选、重塑和数据透视 MultiIndex 数据。无论您需要查询单个交叉部分还是多个交叉部分,还是使用 query 方法,都可以快速有效地完成任务。希望这些技巧能够帮助您更好地利用 Pandas 中的 MultiIndex 索引。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册