Python Pandas – 使用多级索引级别名称重新排列级别
在 Pandas 中,多级索引是提高数据可读性和操作性的重要手段之一。但是当数据集很大时,多级索引的定义和操作可能变得复杂和困难。这时候,我们需要重新排列多级索引的级别名称,使得数据更容易理解。
本文将介绍 Pandas 中使用多级索引级别名称重新排列级别的方法,并附上示例代码。我们将通过以下三个步骤完成操作:
- 创建一个包含多级索引的 Pandas 数据框
- 利用
reorder_levels()函数重新排列索引级别 - 查看重新排列后的数据框
创建一个包含多级索引的 Pandas 数据框
我们首先需要创建一个包含多级索引的 Pandas 数据框。这里我们以一个包含销售数据的数据框为例:
import pandas as pd
# 创建一个包含多级索引的 Pandas 数据框
data = {
('东部', 'A类'): [100, 150, 120],
('东部', 'B类'): [200, 180, 120],
('西部', 'A类'): [80, 130, 150],
('西部', 'B类'): [120, 160, 180]
}
index = pd.MultiIndex.from_tuples([('2021-01-01', '张三'), ('2021-01-02', '李四'), ('2021-01-03', '王五')])
df = pd.DataFrame(data, index=index)
这个数据框有两个级别的索引,其中第一个级别有日期和用户两个变量,第二个级别有地区和产品类别。我们可以看到,这个数据集的索引级别顺序是(日期, 用户)和(地区, 产品类别)。
利用reorder_levels()函数重新排列索引级别
为了简化这个数据集的操作,我们需要重新排列索引级别,将(日期, 用户)放在后面,将(地区, 产品类别)放在前面。我们可以使用reorder_levels()函数来完成这个操作。
# 利用 reorder_levels() 函数重新排列索引级别
df = df.reorder_levels([1, 0], axis=0)
在这个函数中,我们将1和0与axis=0进行绑定。1和0代表了新的索引级别顺序,即(地区, 产品类别)和(日期, 用户)。
查看重新排列后的数据框
现在,我们来查看一下重新排列后的数据框:
print(df)
运行结果如下:
东部 西部
A类 B类 A类 B类
用户 日期
张三 2021-01-01 100 200 80 120
李四 2021-01-02 150 180 130 160
王五 2021-01-03 120 120 150 180
我们可以看到,索引级别已经被重新排列。这使得数据更容易理解和操作。
我们还可以在不必更改源数据框的情况下,使用.swaplevel()函数来实现相同的效果。示例代码如下:
df_swap = df.swaplevel(i=0, j=1, axis=0)
print(df_swap)
结论
本文介绍了 Pandas 中使用多级索引级别名称重新排列级别的方法,并分享了相关示例代码。重新排列索引级别可以使得数据更容易理解和操作,尤其是在数据集较大时。
更多关于 Pandas 的知识,请参考 Pandas 官方文档和教程。
极客笔记