Python Pandas – 使用多级索引中级别的整数位置返回标签值向量
在Pandas中,多级索引是一种非常有用的数据组织形式,可帮助用户轻松管理大量结构化数据。一个多级索引通常由多个级别组成,每个级别都包含一个标签值向量。由于每个级别可能包含大量标签值,因此Pandas提供了一些方法来获取特定级别的标签值。
本文将介绍如何使用多级索引中级别的整数位置返回标签值向量。我们将从创建一个多级索引开始,然后演示如何使用整数位置来获取标签值。
创建一个多级索引
首先,我们需要创建一个多级索引。我们可以使用
“`pd.MultiIndex.from_tuples“`或“`pd.MultiIndex.from_product“`来创建一个多级索引。以下示例演示如何创建一个由两个级别组成的多级索引:
import pandas as pd
# 创建多级索引
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
# 随机创建数据并用多级索引进行索引
data = pd.DataFrame(np.random.randn(8, 4), index=index, columns=['A', 'B', 'C', 'D'])
在这个例子中,我们创建了一个8行、4列的DataFrame,其中每个行都有两个级别的索引,名为’first’和’second’。现在,我们有一个带有多级索引的DataFrame,可以开始使用整数位置获取标签值。
使用整数位置获取标签值
在Pandas中,我们可以使用
“`Index.get_level_values“`方法来获取数据框的多级索引中任意级别的标签值。该方法将返回一个标签值向量,包含与DataFrame中行或列相同的数量。
以下示例演示如何使用第二个级别的整数位置获取第一个级别的标签值向量:
# 使用整数位置获取标签值
labels = data.index.get_level_values(0)
print(labels)
输出结果如下所示:
Index(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], dtype='object', name='first')
注意输出是一个
“`Index“` 对象,而不是一个 “`Series“` 对象。如果要将输出转换为一个 “`Series“` 对象,请使用 “`pd.Series“` 命令:
# 将输出转换为Series对象
labels_series = pd.Series(data.index.get_level_values(0))
print(labels_series)
输出结果如下所示:
0 bar
1 bar
2 baz
3 baz
4 foo
5 foo
6 qux
7 qux
dtype: object
现在,我们已经成功地从DataFrame的第二个级别上获取了标签值向量。在这个示例中,标签值向量中包含的标签值是其对应的行中第一级别的值。然而,我们也可以指定索引的位置,例如,我们可以使用下面的代码来获取DataFrame的第一个级别上的标签值向量:
# 使用第一个级别的整数位置获取标签值
labels = data.index.get_level_values(1)
print(labels)
输出结果如下所示:
Index(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'], dtype='object', name='second')
同样地,在这个示例中返回的标签值向量包含的是其对应的行中第二级别的值。
结论
在本文中,我们介绍了如何使用多级索引中级别的整数位置来获取标签值向量。通过掌握这一技能,您可以轻松地从复杂的多级索引数据中提取必要的信息并进行必要的操作。
极客笔记