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() 函数可以帮助我们根据指定的索引值选择数据,并返回一个表示目标索引的整数数组。此外,该函数提供了多种选择重叠值的方法,使其更加灵活。
极客笔记