Python Pandas – 删除请求的层级后返回MultiIndex

Python Pandas – 删除请求的层级后返回MultiIndex

在对 Pandas 数据框进行操作时,我们经常需要处理索引。有时候,我们会遇到需要删除一些层级后返回 MultiIndex 的操作,本篇文章将分享如何使用 Pandas 在 Python 中进行该操作。

示例数据

我们首先需要创建一些示例数据,方便后续的演示。这里我们创建一个名为 df 的 Pandas 数据框:

import pandas as pd

df = pd.DataFrame({'Animal': ['Dog', 'Dog', 'Cat', 'Cat', 'Cat'],
                   'Color': ['White', 'Black', 'Black', 'White', 'White'],
                   'Size': ['Small', 'Large', 'Small', 'Small', 'Large'],
                   'Count': [1, 2, 3, 4, 5]})
df.set_index(['Animal', 'Color', 'Size'], inplace=True)
print(df)

运行后,可以看到以下输出结果:

                     Count
Animal Color Size         
Dog    White Small      1
       Black Large      2
Cat    Black Small      3
       White Small      4
             Large      5

删除请求的层级并返回 MultiIndex

假如我们有时候会需要删除某一层的索引,同时依然需要保持 MultiIndex 的状态。在 Pandas 中,可以使用 reset_index 和 set_index 方法实现该操作。

我们先来看一下 reset_index 的使用:

new_df = df.reset_index(level=2, drop=True)
print(new_df)

运行后,可以看到以下输出结果:

            Count
Animal Color      
Dog    White     1
       Black     2
Cat    Black     3
       White     4
       White     5

可以看到,我们成功删除了层级为 Size 的索引,同时也保持了 MultiIndex 的状态。其中,reset_index 方法中 level 参数指定要删除的层级,drop 参数指定是否在结果中保留索引。

我们也可以使用 set_index 方法实现相同的操作:

new_df = df.reset_index(level='Size', drop=True).set_index('Animal', append=True)
print(new_df)

运行后,可以看到以下输出结果:

                  Count
Color Size Animal      
White Small Dog        1
Black Large Dog        2
      Small Cat        3
White Small Cat        4
      Large Cat        5

可以看到,我们同样成功删除了层级为 Size 的索引,并保持了 MultiIndex 的状态。

结论

在 Pandas 中,我们可以使用 reset_index 和 set_index 方法,删除请求的层级后依然返回 MultiIndex。这是 Pandas 常用的操作之一,在实际工作中也是非常有用的。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程