python教程—panda:通过标签获取唯一的多索引级别值-Python实用宝典

python教程—panda:通过标签获取唯一的多索引级别值

假设您有一个多索引的DataFrame:它看起来是这样的:我想检索每个索引级别的惟一值。这可以通过使用

假设您有这个多索引的数据aframe:

    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']

我将真正喜欢做的是,通过检索这些列表,并通过它们的名称来处理这些级别,即。“公司”和“tp”。我能找到的最短的两种方法是这样的:

    list(set(df.index.get_level_values('co'))) # returns ['DE', 'FR'] df.index.levels[df.index.names.index('co')] # returns ['DE', 'FR']

但没有一个是非常优雅的。有更近的路吗?

回答

熊猫0.23.0最后引入了一个更干净的解决方案:Index.unique()的level参数:

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

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

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
1

发表评论