Python Pandas – 返回由索引值选定的新索引

Python Pandas – 返回由索引值选定的新索引

Python Pandas 中,索引是用于标识数据结构中数据位置的一种便捷方式。许多情况下,我们希望根据索引的特定值来选取数据,甚至根本不关心其位置。在这种情况下,返回由索引值选定的新索引将非常有用。Python Pandas 中的 Index.get_indexer() 函数可以帮助我们实现这一目的。

Index.get_indexer() 函数的介绍

Index.get_indexer() 函数的定义如下所示:

Index.get_indexer(target, method=None, limit=None, tolerance=None)

参数:
target:要选取索引的目标。
method:定义如何与重叠的值进行匹配。可选值为 {‘pad’, ‘backfill’, ‘nearest’}。
limit:定义正向和反向填充的最大数量。
tolerance:只在 method=nearest 时使用,定义距离的容忍度。默认为 None。

返回值:
– 一个表示目标索引的整数数组。

Index.get_indexer() 函数的应用

以下是一个示例数据集:

import pandas as pd

data = {'name': ['Jack', 'Lucy', 'Mike', 'John', 'Leslie', 'Alice', 'Amy'],
        'gender': ['M', 'F', 'M', 'M', 'F', 'F', 'F'],
        'age': [23, 35, 45, 18, 27, 30, 42]}

df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])
df

输出如下:

    name    gender  age
a   Jack    M       23
b   Lucy    F       35
c   Mike    M       45
d   John    M       18
e   Leslie  F       27
f   Alice   F       30
g   Amy     F       42

如果我们想选择年龄为 35 和 18 的记录,那么我们可以使用 Index.get_indexer() 函数来获取这些记录的索引:

target = ['35', '18']
idx = df.index.get_indexer(target)
idx

输出结果如下:

array([ 1,  3])

结果表明,年龄为 35 和 18 的记录都位于索引位置 1 和 3。

方法参数的使用

method 参数定义了如何与重叠的值进行匹配。有三种可用的方法:
1. 'pad':使用下一个最近的非重叠值作为结果;
2. 'backfill':使用上一个最近的非重叠值作为结果;
3. 'nearest':使用最近的非重叠值作为结果。

下面我们使用 'backfill' 方法选择性别为男性的前两位:

target = ['M'] * 2
idx = df.index.get_indexer(target, method='backfill')
idx

输出结果如下:

array([0, 2])

结果表明,前两种性别为男性的记录分别位于索引位置 0 和 2。

结论

Index.get_indexer() 函数可以帮助我们根据指定的索引值选择数据,并返回一个表示目标索引的整数数组。此外,该函数提供了多种选择重叠值的方法,使其更加灵活。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程