目录
一、用法精讲
921、pandas.Index.get_level_values方法
921-1、语法
921-2、参数
921-3、功能
921-4、返回值
921-5、说明
921-6、用法
921-6-1、数据准备
921-6-2、代码示例
921-6-3、结果输出
922、pandas.Index.get_loc方法
922-1、语法
922-2、参数
922-3、功能
922-4、返回值
922-5、说明
922-6、用法
922-6-1、数据准备
922-6-2、代码示例
922-6-3、结果输出
923、pandas.Index.get_slice_bound方法
923-1、语法
923-2、参数
923-3、功能
923-4、返回值
923-5、说明
923-6、用法
923-6-1、数据准备
923-6-2、代码示例
923-6-3、结果输出
924、pandas.Index.isin方法
924-1、语法
924-2、参数
924-3、功能
924-4、返回值
924-5、说明
924-6、用法
924-6-1、数据准备
924-6-2、代码示例
924-6-3、结果输出
925、pandas.Index.slice_indexer方法
925-1、语法
925-2、参数
925-3、功能
925-4、返回值
925-5、说明
925-6、用法
925-6-1、数据准备
925-6-2、代码示例
925-6-3、结果输出
二、推荐阅读
1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页
一、用法精讲
921、pandas.Index.get_level_values方法
921-1、语法
# 921、pandas.Index.get_level_values方法
pandas.Index.get_level_values(level)
Return an Index of values for requested level.This is primarily useful to get an individual level of values from a MultiIndex, but is provided on Index as well for compatibility.Parameters:
level
int or str
It is either the integer position or the name of the level.Returns:
Index
Calling object, as there is only one level in the Index.
921-2、参数
921-2-1、level(必需):可以是以下几种类型之一:
- 整数:表示要获取的索引级别(从0开始计数)
- 字符串:表示要获取的索引级别的名称
- 默认值:如果不指定,则默认为0,即获取第一级索引的值
921-3、功能
921-3-1、从多级索引中提取指定级别的所有值。
921-3-2、对于单级索引,它返回索引值本身。
921-3-3、对于多级索引,它返回指定级别的所有唯一值。
921-4、返回值
返回一个 Index 对象,包含指定级别的所有值,返回的Index类型取决于原始索引中该级别的数据类型。例如,如果该级别包含字符串,则返回pandas.Index;如果包含日期时间,则返回pandas.DatetimeIndex等。
921-5、说明
无
921-6、用法
921-6-1、数据准备
无
921-6-2、代码示例
# 921、pandas.Index.get_level_values方法
import pandas as pd
# 创建一个多级索引的DataFrame
df = pd.DataFrame({'A': range(6),'B': ['a', 'b'] * 3
}, index=[['x', 'x', 'y', 'y', 'z', 'z'], [1, 2, 1, 2, 1, 2]])print(df)
'''A B
x 1 0 a2 1 b
y 1 2 a2 3 b
z 1 4 a2 5 b
'''
# 获取第一级索引的值
level_0 = df.index.get_level_values(0)
print(level_0)
# 获取第二级索引的值
level_1 = df.index.get_level_values(1)
print(level_1)
# 使用级别名称获取索引值(如果设置了名称)
df.index.names = ['Upper', 'Lower']
upper_level = df.index.get_level_values('Upper')
print(upper_level)
921-6-3、结果输出
# 921、pandas.Index.get_level_values方法# A B
# x 1 0 a
# 2 1 b
# y 1 2 a
# 2 3 b
# z 1 4 a
# 2 5 b
# Index(['x', 'x', 'y', 'y', 'z', 'z'], dtype='object')
# Index([1, 2, 1, 2, 1, 2], dtype='int64')
# Index(['x', 'x', 'y', 'y', 'z', 'z'], dtype='object', name='Upper')
922、pandas.Index.get_loc方法
922-1、语法
# 922、pandas.Index.get_loc方法
pandas.Index.get_loc(key)
Get integer location, slice or boolean mask for requested label.Parameters:
key
label
Returns:
int if unique index, slice if monotonic index, else mask
922-2、参数
922-2-1、key(必需):表示要查找的键,可以是单个值或用于多级索引时的元组。
922-3、功能
允许用户获取特定键在索引中的位置,从而用于数据选择和过滤等操作,提供一种高效的方法查找索引位置,尤其是在大型数据集上进行操作时。
922-4、返回值
对于单级索引,返回该键在Index中的整数位置;对于多级索引,返回一个切片对象,表示该键在每个级别中的位置,或者通过Leaf和Level描述来表示索引(如整数、切片等),如果该键不存在,将引发KeyError。
922-5、说明
无
922-6、用法
922-6-1、数据准备
无
922-6-2、代码示例
# 922、pandas.Index.get_loc方法
import pandas as pd
# 创建一个单级索引
index_single = pd.Index(['a', 'b', 'c', 'd'])
# 查找元素'b'的位置
pos_b = index_single.get_loc('b')
print(pos_b)
# 调用不存在的元素
# pos_x = index_single.get_loc('x') # 会引发 KeyError
# 创建一个多级索引
index_multi = pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('b', 1), ('c', 1)])
# 查找元素('b', 1)的位置
pos_b1 = index_multi.get_loc(('b', 1))
print(pos_b1)
# 查找元素('a', 1)的位置
pos_a1 = index_multi.get_loc(('a', 1))
print(pos_a1)
922-6-3、结果输出
# 922、pandas.Index.get_loc方法
# 1
# 2
# 0
923、pandas.Index.get_slice_bound方法
923-1、语法
# 923、pandas.Index.get_slice_bound方法
pandas.Index.get_slice_bound(label, side)
Calculate slice bound that corresponds to given label.Returns leftmost (one-past-the-rightmost if side=='right') position of given label.Parameters:
label
object
side
{‘left’, ‘right’}
Returns:
int
Index of label.
923-2、参数
923-2-1、label(必需):表示要查找的标签值,可以是任何与索引类型兼容的对象。
923-2-2、side(必需):字符串,必须是'left'或'right',相关说明如下:
- 'left': 返回第一个大于等于给定标签的位置
- 'right':返回第一个大于给定标签的位置
923-3、功能
用于在排序的Index对象中查找给定标签的边界位置,在实现基于标签的切片操作时非常有用。
923-4、返回值
返回一个整数,表示满足条件的边界位置的索引。
- 如果找到完全匹配的标签,则返回其位置
- 如果未找到完全匹配,则根据side参数返回最接近的位置
- 如果label小于索引中的所有值,则返回0
- 如果label大于索引中的所有值,则返回len(index)
923-5、说明
无
923-6、用法
923-6-1、数据准备
无
923-6-2、代码示例
# 923、pandas.Index.get_slice_bound方法
import pandas as pd
idx = pd.Index([1, 2, 3, 4, 5])
print(idx.get_slice_bound(3, 'left'))
print(idx.get_slice_bound(3, 'right'))
print(idx.get_slice_bound(2.5, 'left'))
print(idx.get_slice_bound(2.5, 'right'))
923-6-3、结果输出
# 923、pandas.Index.get_slice_bound方法
# 2
# 3
# 2
# 2
924、pandas.Index.isin方法
924-1、语法
# 924、pandas.Index.isin方法
pandas.Index.isin(values, level=None)
Return a boolean array where the index values are in values.Compute boolean array of whether each index value is found in the passed set of values. The length of the returned boolean array matches the length of the index.Parameters:
values
set or list-like
Sought values.level
str or int, optional
Name or position of the index level to use (if the index is a MultiIndex).Returns:
np.ndarray[bool]
NumPy array of boolean values.
924-2、参数
924-2-1、values(必需):用于指定一组值,这些值将被用来检查当前索引对象的元素是否在其中,通常是一个可以被迭代的对象,比如列表、集合、数组等。
924-2-2、level(可选,默认值为None):索引级别的名称(字符串)或级别的整数位置(从0开始),当索引是多级索引(MultiIndex)时,可以指定一个级别(level)进行匹配;如果不指定,默认为None,表示对整个索引进行匹配。
924-3、功能
判断Index对象中的每个元素是否包含在values提供的集合中。
924-4、返回值
返回一个布尔型的numpy.ndarray,其中每个布尔值对应于Index中的一个元素,如果该元素存在于values中,则对应位置为True;否则为False。
924-5、说明
无
924-6、用法
924-6-1、数据准备
无
924-6-2、代码示例
# 924、pandas.Index.isin方法
import pandas as pd
# 创建一个索引对象
idx = pd.Index([1, 2, 3, 4, 5])
# 检查哪些元素存在于指定的值列表中
print(idx.isin([2, 4, 6]))
# 多层索引示例
multi_idx = pd.MultiIndex.from_tuples([(1, 'a'), (2, 'b'), (3, 'c')])
# 在指定层级中查找
print(multi_idx.isin([1, 3], level=0))
924-6-3、结果输出
# 924、pandas.Index.isin方法
# [False True False True False]
# [ True False True]
925、pandas.Index.slice_indexer方法
925-1、语法
# 925、pandas.Index.slice_indexer方法
pandas.Index.slice_indexer(start=None, end=None, step=None)
Compute the slice indexer for input labels and step.Index needs to be ordered and unique.Parameters:
start
label, default None
If None, defaults to the beginning.end
label, default None
If None, defaults to the end.step
int, default None
Returns:
slice
Raises:
KeyError
If key does not exist, or key is not unique and index is
not ordered.NotesThis function assumes that the data is sorted, so use at your own peril
925-2、参数
925-2-1、start(可选,默认值为None):表示切片的起始位置(含),可以是整数或字符串,如果为None,则表示从索引的开始位置开始。
925-2-2、end(可选,默认值为None):表示切片的结束位置(含),可以是整数或字符串,如果为None,则表示到索引的结束位置。
925-2-3、step(可选,默认值为None):表示切片的步长,可以是整数,如果为None,则表示步长为1。
925-3、功能
计算索引切片的起始和结束位置。
925-4、返回值
一个元组(start, end, step),表示切片的起始位置、结束位置和步长。
925-5、说明
无
925-6、用法
925-6-1、数据准备
无
925-6-2、代码示例
# 925、pandas.Index.slice_indexer方法
import pandas as pd
idx = pd.MultiIndex.from_arrays([list('abcd'), list('efgh')])
data = idx.slice_indexer(start='b', end=('c', 'g'))
print(data)
925-6-3、结果输出
# 925、pandas.Index.slice_indexer方法
# slice(1, 3, None)