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 常用的操作之一,在实际工作中也是非常有用的。
极客笔记