- Python Pandas 教程
- Python Pandas - 首页
- Python Pandas - 简介
- Python Pandas - 环境搭建
- Python Pandas - 基础
- Python Pandas - 数据结构介绍
- Python Pandas - 索引对象
- Python Pandas - 面板
- Python Pandas - 基本功能
- Python Pandas - 索引与数据选择
- Python Pandas - Series
- Python Pandas - Series
- Python Pandas - 切片 Series 对象
- Python Pandas - Series 对象的属性
- Python Pandas - Series 对象的算术运算
- Python Pandas - 将 Series 转换为其他对象
- Python Pandas - DataFrame
- Python Pandas - DataFrame
- Python Pandas - 访问 DataFrame
- Python Pandas - 切片 DataFrame 对象
- Python Pandas - 修改 DataFrame
- Python Pandas - 从 DataFrame 中删除行
- Python Pandas - DataFrame 的算术运算
- Python Pandas - I/O 工具
- Python Pandas - I/O 工具
- Python Pandas - 处理 CSV 格式
- Python Pandas - 读取和写入 JSON 文件
- Python Pandas - 从 Excel 文件读取数据
- Python Pandas - 将数据写入 Excel 文件
- Python Pandas - 处理 HTML 数据
- Python Pandas - 剪贴板
- Python Pandas - 处理 HDF5 格式
- Python Pandas - 与 SQL 的比较
- Python Pandas - 数据处理
- Python Pandas - 排序
- Python Pandas - 重新索引
- Python Pandas - 迭代
- Python Pandas - 连接
- Python Pandas - 统计函数
- Python Pandas - 描述性统计
- Python Pandas - 处理文本数据
- Python Pandas - 函数应用
- Python Pandas - 选项和自定义
- Python Pandas - 窗口函数
- Python Pandas - 聚合
- Python Pandas - 合并/连接
- Python Pandas - 多级索引
- Python Pandas - 多级索引基础
- Python Pandas - 使用多级索引进行索引
- Python Pandas - 使用多级索引进行高级重新索引
- Python Pandas - 重命名多级索引标签
- Python Pandas - 多级索引排序
- Python Pandas - 二元运算
- Python Pandas - 二元比较运算
- Python Pandas - 布尔索引
- Python Pandas - 布尔掩码
- Python Pandas - 数据重塑和透视表
- Python Pandas - 透视表
- Python Pandas - 堆叠和取消堆叠
- Python Pandas - 熔化
- Python Pandas - 计算虚拟变量
- Python Pandas - 分类数据
- Python Pandas - 分类数据
- Python Pandas - 分类数据的排序和排序
- Python Pandas - 分类数据的比较
- Python Pandas - 处理缺失数据
- Python Pandas - 缺失数据
- Python Pandas - 填充缺失数据
- Python Pandas - 缺失值的插值
- Python Pandas - 删除缺失数据
- Python Pandas - 使用缺失数据进行计算
- Python Pandas - 处理重复数据
- Python Pandas - 重复数据
- Python Pandas - 计数和检索唯一元素
- Python Pandas - 重复标签
- Python Pandas - 分组和聚合
- Python Pandas - GroupBy
- Python Pandas - 时间序列数据
- Python Pandas - 日期功能
- Python Pandas - Timedelta
- Python Pandas - 稀疏数据结构
- Python Pandas - 稀疏数据
- Python Pandas - 可视化
- Python Pandas - 可视化
- Python Pandas - 其他概念
- Python Pandas - 警告和注意事项
- Python Pandas 有用资源
- Python Pandas - 快速指南
- Python Pandas - 有用资源
- Python Pandas - 讨论
Python Pandas - 多级索引排序
Pandas 中的多级索引排序用于高效地组织分层数据集。在 Pandas 中,多级索引也称为分层索引,它在 Pandas 数据结构(如 DataFrame 或 Series 对象)中具有多个索引级别。可以独立地对多级索引对象中的每个级别进行排序,以便对数据应用高效的切片、索引、过滤和检索操作。
在本教程中,我们将学习如何使用**sort_index()** 和**sortlevel()** 方法以及不同的方法来对 Pandas 中的多级索引对象进行排序。
使用 sort_index() 对多级索引进行排序
Pandas 的**DataFrame.sort_index()** 方法用于按所有级别对多级索引进行排序。对多级索引对象进行排序对于高效地索引和切片数据很有用。
示例
以下是使用**df.sort_index()** 方法对多级索引按所有级别进行排序的基本示例。这会根据多级索引的两个级别对数据进行排序。
import pandas as pd # Create a MultiIndex object index = pd.MultiIndex.from_tuples([('A', 'one'), ('A', 'two'), ('A', 'three'),('B', 'one'), ('B', 'two'), ('B', 'three')], names=["level0", "level1"]) # Create a DataFrame data = [[1, 2], [3, 4], [1, 1], [5, 6], [7, 8], [2, 2]] df = pd.DataFrame(data, index=index, columns=['X', 'Y']) # Display the input DataFrame print('Original MultiIndexed DataFrame:\n',df) # Sort MultiIndex with default levels sorted_df = df.sort_index() print("Resultant DataFrame:") print(sorted_df)
以下是上述代码的输出 -
Original MultiIndexed DataFrame:
X | Y | ||
---|---|---|---|
level1 | level2 | ||
A | one | 1 | 2 |
two | 3 | 4 | |
three | 1 | 1 | |
B | one | 5 | 6 |
two | 7 | 8 | |
three | 2 | 2 |
X | Y | ||
---|---|---|---|
level1 | level2 | ||
A | one | 1 | 2 |
three | 1 | 1 | |
two | 3 | 4 | |
B | one | 5 | 6 |
three | 2 | 2 | |
two | 7 | 8 |
按特定级别对多级索引进行排序
如果要按多级索引的特定级别进行排序,可以使用**df.sort_index()** 方法的**level** 参数。
示例
以下是按其第一级(即,level=0)对多级索引进行排序的示例。
import pandas as pd # Create a MultiIndex object index = pd.MultiIndex.from_tuples([('C', 'one'), ('C', 'two'),('B', 'one'), ('B', 'two')]) # Create a DataFrame data = [[1, 2], [3, 4], [5, 6], [7, 8]] df = pd.DataFrame(data, index=index, columns=['X', 'Y']) # Display the input DataFrame print('Original MultiIndexed DataFrame:\n',df) # Sort MultiIndex by the first level sorted_df = df.sort_index(level=0) print("Resultant DataFrame:") print(sorted_df)
以下是上述代码的输出 -
Original MultiIndexed DataFrame:
X | Y | ||
---|---|---|---|
C | one | 1 | 2 |
two | 3 | 4 | |
B | one | 5 | 6 |
two | 7 | 8 |
X | Y | ||
---|---|---|---|
B | one | 5 | 6 |
two | 7 | 8 | |
C | one | 1 | 2 |
two | 3 | 4 |
按级别名称对多级索引进行排序
与上述方法类似,您还可以使用**df.sort_index()** 方法和**level** 参数,按级别名称而不是数值索引对多级索引进行排序。
示例
此示例使用指定给**set_names()** 方法的**level** 参数的级别名称对多级索引进行排序。
import pandas as pd # Create a MultiIndex object index = pd.MultiIndex.from_tuples([('D', 'z'), ('D', 'x'), ('D', 'y'),('B', 't'), ('B', 's'), ('B', 'v')], names=["level0", "level1"]) # Create a DataFrame data = [[1, 2], [3, 4], [1, 1], [5, 6], [7, 8], [2, 2]] df = pd.DataFrame(data, index=index, columns=['X', 'Y']) # Display the input DataFrame print('Original MultiIndexed DataFrame:\n',df) # Sort by the level name sorted_df = df.sort_index(level='level1') print("Resultant DataFrame:") print(sorted_df)
以下是上述代码的输出 -
Original MultiIndexed DataFrame:
X | Y | ||
---|---|---|---|
level1 | level2 | ||
D | z | 1 | 2 |
x | 3 | 4 | |
y | 1 | 1 | |
B | t | 5 | 6 |
s | 7 | 8 | |
v | 2 | 2 |
X | Y | ||
---|---|---|---|
level1 | level2 | ||
B | s | 7 | 8 |
t | 5 | 6 | |
v | 2 | 2 | |
D | x | 3 | 4 |
y | 1 | 1 | |
z | 1 | 2 |
使用 sortlevel() 在特定级别上对多级索引进行排序
使用**MultiIndex.sortlevel()** 方法,您也可以在特定级别上对多级索引进行排序。
示例
以下是使用**MultiIndex.sortlevel()** 方法对多级索引对象进行排序的示例。
import pandas as pd # Create arrays arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']] # The from_arrays() is used to create a MultiIndex multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student')) # display the MultiIndex print("The Multi-index...\n",multiIndex) # get the levels in MultiIndex print("\nThe levels in Multi-index...\n",multiIndex.levels) # Sort MultiIndex # The specific level to sort is set as a parameter i.e. level 1 here print("\nSort MultiIndex at the requested level...\n",multiIndex.sortlevel(1))
以下是上述代码的输出 -
The Multi-index... MultiIndex([(2, 'Peter'), (4, 'Chris'), (3, 'Andy'), (1, 'Jacob')], names=['ranks', 'student']) The levels in Multi-index... [[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter']] Sort MultiIndex at the requested level... (MultiIndex([(3, 'Andy'), (4, 'Chris'), (1, 'Jacob'), (2, 'Peter')], names=['ranks', 'student']), array([2, 1, 3, 0]))
广告