为什么多索引数据框在选择后会返回所有索引?

问题描述

我发现多索引数据帧很奇怪:

对于非常简单的df:

import pandas as pd

df = pd.DataFrame([{'Name': 'Chris','Item Purchased': 'Sponge','Cost': 22.50},{'Name': 'Kevyn','Item Purchased': 'Kitty Litter','Cost': 2.50},{'Name': 'Filip','Item Purchased': 'Spoon','Cost': 5.00}],index=['Store 1','Store 2','Store 3'])

df3 = df.reset_index()

df3 = df3.set_index(['index','Name'])

如果我只想获得大于4美元的成本索引。很容易选择:

df4 = df3[df3['Cost'] > 4]
df4

enter image description here

但是当我尝试从索引中获取商店ID时:


df4.index.levels[0]

应该仅是商店1和商店3,但实际结果是:

Index(['Store 1','Store 3'],dtype='object',name='index')

因此,即使选择后,索引似乎仍会返回原始索引中的所有成员。

有人可以帮助我为什么会这样吗?选择后如何获得正确的索引?

谢谢。

解决方法

使用MultiIndex.remove_unused_levels

df4.index = df4.index.remove_unused_levels()

print (df4.index.levels[0])