这会很有用,所以我知道我必须对多少个独特的组进行计算。谢谢你。
假设 groupby 对象被调用dfgroup
。
这会很有用,所以我知道我必须对多少个独特的组进行计算。谢谢你。
假设 groupby 对象被调用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
返回实际组本身不同。
len
呢?如BrenBarn 的回答中所述,您可以使用len(dfg)
来获取组数。但你不应该。查看(内部调用)的实现GroupBy.__len__
,我们看到调用,它返回分组索引的字典:len()
__len__
GroupBy.groups
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.size
. 但请注意,size
NaN 也算在内。如果您不想计算 NaN,请GroupBy.count
改用。
如文档所述,您可以使用len(dfgroup)
.