Предположим, что у вас есть этот MultiIndex-ed DataFrame:
df = pd.DataFrame({'co':['DE','DE','FR','FR'],
'tp':['Lake','Forest','Lake','Forest'],
'area':[10,20,30,40],
'count':[7,5,2,3]})
df = df.set_index(['co','tp'])
Что выглядит так:
area count
co tp
DE Lake 10 7
Forest 20 5
FR Lake 30 2
Forest 40 3
Я бы хотел получить уникальные значения на уровне индекса. Это можно сделать, используя
df.index.levels[0] # returns ['DE', 'FR]
df.index.levels[1] # returns ['Lake', 'Forest']
Что бы я хотел сделать, это получить эти списки с помощью , обращаясь к уровням по имени, т.е. 'co'
и 'tp'
. Самый короткий два пути, которые я мог найти, выглядит так:
list(set(df.index.get_level_values('co'))) # returns ['DE', 'FR']
df.index.levels[df.index.names.index('co')] # returns ['DE', 'FR']
Но не из них очень изящны. Есть ли более короткий путь?