这将是有用的,所以我知道有多少独特的组,我必须执行计算。谢谢。
假设 groupby 对象称为 dfgroup。
dfgroup
作为 记录在案,可以用 len(dfgroup)得到组的数目。
len(dfgroup)
ngroups
新版本的 GroupBy API 提供了这个(未记录的)属性,该属性在 GroupBy 对象中存储组的数量。
# setup df = pd.DataFrame({'A': list('aabbcccd')}) dfg = df.groupby('A')
# call `.ngroups` on the GroupBy object dfg.ngroups # 4
注意,这与返回实际组本身的 GroupBy.groups不同。
GroupBy.groups
len
正如在 布伦巴恩的回答中指出的,您可以使用 len(dfg)来获得组的数量。但你不应该.看看 实施 GroupBy.__len__(len()在内部调用) ,我们看到 __len__调用 GroupBy.groups,它返回一个分组索引的字典:
len(dfg)
GroupBy.__len__
len()
__len__
dfg.groups {'a': Int64Index([0, 1], dtype='int64'), 'b': Int64Index([2, 3], dtype='int64'), 'c': Int64Index([4, 5, 6], dtype='int64'), 'd': Int64Index([7], dtype='int64')}
根据操作中组的数量,生成字典却发现它的长度是一个浪费的步骤。另一方面,ngroups是一个存储属性,可以是 以恒定的时间访问。
这在 GroupBy对象属性中有记载。然而,len的问题在于,对于一个具有许多组的 GroupBy 对象,这可能需要更长的时间
GroupBy
你走运了。我们有一个函数,叫做 GroupBy.size。但是请注意,size也计算 NaN。如果不希望计算 NaNs,可以使用 GroupBy.count。
GroupBy.size
size
GroupBy.count