目录
一、用法精讲
986、pandas.MultiIndex.get_loc方法
986-1、语法
986-2、参数
986-3、功能
986-4、返回值
986-5、说明
986-6、用法
986-6-1、数据准备
986-6-2、代码示例
986-6-3、结果输出
987、pandas.MultiIndex.get_locs方法
987-1、语法
987-2、参数
987-3、功能
987-4、返回值
987-5、说明
987-6、用法
987-6-1、数据准备
987-6-2、代码示例
987-6-3、结果输出
988、pandas.MultiIndex.get_loc_level方法
988-1、语法
988-2、参数
988-3、功能
988-4、返回值
988-5、说明
988-6、用法
988-6-1、数据准备
988-6-2、代码示例
988-6-3、结果输出
989、pandas.MultiIndex.drop方法
989-1、语法
989-2、参数
989-3、功能
989-4、返回值
989-5、说明
989-6、用法
989-6-1、数据准备
989-6-2、代码示例
989-6-3、结果输出
990、pandas.MultiIndex.copy方法
990-1、语法
990-2、参数
990-3、功能
990-4、返回值
990-5、说明
990-6、用法
990-6-1、数据准备
990-6-2、代码示例
990-6-3、结果输出
二、推荐阅读
1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页
一、用法精讲
986、pandas.MultiIndex.get_loc方法
986-1、语法
# 986、pandas.MultiIndex.get_loc方法
pandas.MultiIndex.get_loc(key)
Get location for a label or a tuple of labels.
The location is returned as an integer/slice or boolean mask.
Parameters:
key
label or tuple of labels (one for each level)
Returns:
int, slice object or boolean mask
If the key is past the lexsort depth, the return may be a boolean mask array, otherwise it is always a slice or int.
986-2、参数
986-2-1、key(必需):表示要查找的键,可以是单个值或一个元组,如果是单个值,表示查找该值在MultiIndex中的位置;如果是元组,表示查找对应的多级索引。
986-3、功能
返回给定键在MultiIndex中的位置,它可以用于快速定位多级索引中的特定项,通常在数据选择和切片操作中非常有用。
986-4、返回值
返回值是一个整数或切片对象,表示给定键在MultiIndex中的位置,如果找到该键,返回其对应的整数位置;如果是元组,返回一个切片对象,表示该键在多级索引中的范围;如果未找到该键,则会引发KeyError异常。
986-5、说明
无
986-6、用法
986-6-1、数据准备
无
986-6-2、代码示例
# 986、pandas.MultiIndex.get_loc方法
import pandas as pd
# 创建一个MultiIndex
arrays = [
['A', 'A', 'B', 'B'],
[1, 2, 1, 2]
]
index = pd.MultiIndex.from_arrays(arrays, names=('letter', 'number'))
# 使用get_loc查找位置
loc_A1 = index.get_loc(('A', 1))
loc_B2 = index.get_loc(('B', 2))
print(loc_A1)
print(loc_B2)
986-6-3、结果输出
# 986、pandas.MultiIndex.get_loc方法
# 0
# 3
987、pandas.MultiIndex.get_locs方法
987-1、语法
# 987、pandas.MultiIndex.get_locs方法
pandas.MultiIndex.get_locs(seq)
Get location for a sequence of labels.
Parameters:
seq
label, slice, list, mask or a sequence of such
You should use one of the above for each level. If a level should not be used, set it to slice(None).
Returns:
numpy.ndarray
NumPy array of integers suitable for passing to iloc.
987-2、参数
987-2-1、seq(必需):一个元组或元组列表,用于定位多级索引的位置。
987-3、功能
根据给定的元组或元组序列查找对应的索引位置,返回与输入元组匹配的行的整数索引位置,支持部分匹配和精确匹配多级索引。
987-4、返回值
返回一个NumPy数组,包含匹配的行索引位置,如果没有匹配,则返回空数组。
987-5、说明
无
987-6、用法
987-6-1、数据准备
无
987-6-2、代码示例
# 987、pandas.MultiIndex.get_locs方法
import pandas as pd
mi = pd.MultiIndex.from_arrays([list('abb'), list('def')])
data = mi.get_locs('b')
print(data)
987-6-3、结果输出
# 987、pandas.MultiIndex.get_locs方法
# [1 2]
988、pandas.MultiIndex.get_loc_level方法
988-1、语法
# 988、pandas.MultiIndex.get_loc_level方法
pandas.MultiIndex.get_loc_level(key, level=0, drop_level=True)
Get location and sliced index for requested label(s)/level(s).
Parameters:
key
label or sequence of labels
level
int/level name or list thereof, optional
drop_level
bool, default True
If False, the resulting index will not drop any level.
Returns:
tuple
A 2-tuple where the elements :
Element 0: int, slice object or boolean array.
Element 1: The resulting sliced multiindex/index. If the key contains all levels, this will be None.
988-2、参数
988-2-1、key(必需):表示要查找的键,可以是单个值或一个值的元组,具体取决于索引的层数。
988-2-2、level(可选,默认值为0):整数或字符串,指定要查找的层级,可以使用层级的整数索引(从0开始)或层级名称。
988-2-3、drop_level(可选,默认值为True):布尔值,指定是否在返回结果中删除所查找的层级,如果为True,则返回的结果中不包含该层级;如果为False,则返回的结果中包含该层级。
988-3、功能
用于在多重索引(MultiIndex)中查找特定键的位置。
988-4、返回值
返回一个元组,包含两个元素:
988-4-1、loc:int或slice,指定键在索引中的位置或切片。
988-4-2、indexer:ndarray,指定键在该层级中的索引位置。
988-5、说明
无
988-6、用法
988-6-1、数据准备
无
988-6-2、代码示例
# 988、pandas.MultiIndex.get_loc_level方法
import pandas as pd
# 创建一个多重索引
arrays = [
['A', 'A', 'B', 'B'],
[1, 2, 1, 2]
]
index = pd.MultiIndex.from_arrays(arrays, names=('letter', 'number'))
# 使用get_loc_level方法
loc, indexer = index.get_loc_level(('A', 1), level=0)
print(loc)
print(indexer)
988-6-3、结果输出
# 988、pandas.MultiIndex.get_loc_level方法
# 0
# None
989、pandas.MultiIndex.drop方法
989-1、语法
# 989、pandas.MultiIndex.drop方法
pandas.MultiIndex.drop(codes, level=None, errors='raise')
Make a new pandas.MultiIndex with the passed list of codes deleted.
Parameters:
codes
array-like
Must be a list of tuples when level is not specified.
level
int or level name, default None
errors
str, default ‘raise’
Returns:
MultiIndex
989-2、参数
989-2-1、codes(必需):单个值或列表,表示要删除的索引代码,可以是单个代码,也可以是代码的列表。
989-2-2、level(可选,默认值为None):整数或字符串,指定要删除代码的级别,如果为None,则在所有级别中查找并删除指定的代码;如果指定了级别,则仅在该级别中查找并删除。
989-2-3、errors(可选,默认值为'raise'):字符串,指定在找不到要删除的代码时的行为,可选值为:
- 'raise':如果找不到指定的代码,则引发错误。
- 'ignore': 如果找不到指定的代码,则不执行任何操作。
989-3、功能
从MultiIndex中删除指定的索引代码,允许用户根据需要选择特定的级别进行删除。
989-4、返回值
返回一个新的MultiIndex对象,其中已删除指定的索引代码,原始的MultiIndex不会被修改。
989-5、说明
无
989-6、用法
989-6-1、数据准备
无
989-6-2、代码示例
# 989、pandas.MultiIndex.drop方法
import pandas as pd
# 创建一个MultiIndex
arrays = [
['A', 'A', 'B', 'B'],
[1, 2, 1, 2]
]
index = pd.MultiIndex.from_arrays(arrays, names=('letters', 'numbers'))
# 删除代码
new_index = index.drop(codes=1, level='numbers')
print(new_index)
989-6-3、结果输出
# 989、pandas.MultiIndex.drop方法
# MultiIndex([('A', 2),
# ('B', 2)],
# names=['letters', 'numbers'])
990、pandas.MultiIndex.copy方法
990-1、语法
# 990、pandas.MultiIndex.copy方法
pandas.MultiIndex.copy(names=None, deep=False, name=None)
Make a copy of this object.
Names, dtype, levels and codes can be passed and will be set on new copy.
Parameters:
names
sequence, optional
deep
bool, default False
name
Label
Kept for compatibility with 1-dimensional Index. Should not be used.
Returns:
MultiIndex
Notes
In most cases, there should be no functional difference from using deep, but if deep is passed it will attempt to deepcopy. This could be potentially expensive on large MultiIndex objects.
990-2、参数
990-2-1、names(可选,默认值为None):用于指定新的索引名称列表,如果为None,则保留原索引名称。
990-2-2、deep(可选,默认值为False):布尔值,控制拷贝的深度:
- False:浅拷贝,只复制索引对象的引用
- True:深拷贝,完全复制索引对象及其数据
990-2-3、name(可选,默认值为None):设置新索引的名称。
990-3、功能
创建MultiIndex的一个副本,可以选择性地修改索引名称。
990-4、返回值
返回一个新的MultiIndex对象。
990-5、说明
无
990-6、用法
990-6-1、数据准备
无
990-6-2、代码示例
# 990、pandas.MultiIndex.copy方法
import pandas as pd
# 创建原MultiIndex
mi = pd.MultiIndex.from_arrays([[1,2],[3,4]], names=['a', 'b'])
# 浅拷贝
mi_copy1 = mi.copy()
# 深拷贝并修改名称
mi_copy2 = mi.copy(names=['x', 'y'], deep=True)
print(mi_copy1)
print(mi_copy2)
990-6-3、结果输出
# 990、pandas.MultiIndex.copy方法
# MultiIndex([(1, 3),
# (2, 4)],
# names=['a', 'b'])
# MultiIndex([(1, 3),
# (2, 4)],
# names=['x', 'y'])