首页 > 解决方案 > 为什么多索引数据框会在选择后返回所有索引?

问题描述

我发现关于多索引数据框的一件事很奇怪:

对于一个非常简单的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

在此处输入图像描述

但是当我尝试从 index 获取 store id 时:


df4.index.levels[0]

应该只有Store 1和Store 3,但实际结果:

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

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

有人可以帮助我为什么会发生这种情况,选择后如何获得正确的索引?

谢谢。

标签: pythonpandasmulti-index

解决方案


使用MultiIndex.remove_unused_levels

df4.index = df4.index.remove_unused_levels()

print (df4.index.levels[0])

推荐阅读