【问题标题】:How to find the number of groups in multi-index groupby object in pandas?如何在熊猫中查找多索引 groupby 对象中的组数?
【发布时间】:2016-05-16 15:19:45
【问题描述】:

我的问题很简单,但我在任何地方都找不到答案。

我想拥有多索引 pandas groupby 对象中的组数。请注意,这与组中的元素数量不同(使用.size()),也与组的总数不同(使用len。请参阅here)。

最好用一个例子来说明。

让我们创建一个简单的数据框:

import pandas as pd
df = pd.DataFrame({'Group': ['gr1','gr1','gr2','gr2','gr3','gr3'],
                   'Kind': ['sweet','sour','sweet','sour','sweet','sour'],
                   'Values': [10,11,200,201,300,301]})

现在我们使用两列进行分组:

gr = df.groupby(['Group','Kind'])

这会产生所需的 groupby 对象。它共有六个组,您可以通过以下方式验证:

len(gr)

我现在可以遍历组:

for key,group in gr:
    print key

这会产生以下结果:

('gr1', 'sour')
('gr1', 'sweet')
('gr2', 'sour')
('gr2', 'sweet')
('gr3', 'sour')
('gr3', 'sweet')

我们可以看到第一个键有 3 个唯一条目,第二个键有 2 个唯一条目。

我正在寻找的是给定gr 返回 (3,2) 的东西,而无需访问生成 gr 的原始数据集,也无需遍历 groupby 对象、建立列表并找到其独特的元素。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我能想到的最短路径可能是

    >>> gr.dtypes.index.levshape
    (3, 2)
    

    基本上,我们需要以 MultiIndex 的形式获取组的句柄:

    >>> gr.dtypes
                  Group    Kind Values
    Group Kind                        
    gr1   sour   object  object  int64
          sweet  object  object  int64
    gr2   sour   object  object  int64
          sweet  object  object  int64
    gr3   sour   object  object  int64
          sweet  object  object  int64
    >>> gr.dtypes.index
    MultiIndex(levels=[['gr1', 'gr2', 'gr3'], ['sour', 'sweet']],
               labels=[[0, 0, 1, 1, 2, 2], [0, 1, 0, 1, 0, 1]],
               names=['Group', 'Kind'])
    >>> gr.dtypes.index.levels
    FrozenList([['gr1', 'gr2', 'gr3'], ['sour', 'sweet']])
    >>> gr.dtypes.index.levshape
    (3, 2)
    

    原来我在想

    >>> pd.Series(gr.groups).index.levshape
    (3, 2)
    

    groups 字典中创建一个新索引,但看起来该信息已经存在于dtypes 中。

    【讨论】:

    • 谢谢!你的回答很有道理。
    • 这个答案有一个问题:如果组是一维的,那么这会失败并返回错误而不是返回,例如,(3,0)
    猜你喜欢
    • 2015-03-03
    • 2018-08-01
    • 2019-08-26
    • 1970-01-01
    • 2013-11-16
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    相关资源
    最近更新 更多