【发布时间】: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 对象、建立列表并找到其独特的元素。
【问题讨论】: