- 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]))
廣告