假设您有这个 MultiIndex-ed DataFrame:
df = pd.DataFrame({'country':['DE','DE','FR','FR'],
'biome':['Lake','Forest','Lake','Forest'],
'area':[10,20,30,40],
'count':[7,5,2,3]})
df = df.set_index(['country','biome'])
看起来像这样:
area count
country biome
DE Lake 10 7
Forest 20 5
FR Lake 30 2
Forest 40 3
我想 检索每个索引级别的唯一值。这可以完成使用
>>> df.index.levels[0]
['DE', 'FR']
>>> df.index.levels[1]
['Lake', 'Forest']
我想 真的做的是通过 按照名称对各个级别进行定位检索这些列表,即 'country'
和 'biome'
。我能找到的最短的两条路是这样的:
>>> list(set(df.index.get_level_values('country')))
['DE', 'FR']
>>> df.index.levels[df.index.names.index('country')]
['DE', 'FR']
但是没有一种是非常优雅的,有没有一种更短或者更有表现力的方式呢?