gpt4 book ai didi

python - Pandas:按标签获取唯一的 MultiIndex 级别值

转载 作者:IT老高 更新时间:2023-10-28 20:31:48 31 4
gpt4 key购买 nike

假设你有这个 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''生物群落'。我能找到的最短的两种方法如下所示:

>>> list(set(df.index.get_level_values('country')))
['DE', 'FR']

>>> df.index.levels[df.index.names.index('country')]
['DE', 'FR']

但它们都不是很优雅。有没有更短和/或更高效的方法?

最佳答案

Pandas 0.23.0 终于 introduced这个问题的一个更干净的解决方案: Index.unique()level 参数:

In [3]: df.index.unique(level='country')
Out[3]: Index(['DE', 'FR'], dtype='object', name='country')

这是现在推荐的解决方案。它的效率要高得多,因为它避免了在内存中创建级别值的完整表示并重新扫描它。

关于python - Pandas:按标签获取唯一的 MultiIndex 级别值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24495695/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com