[英]How to get number of groups in a groupby object in pandas?
这会很有用,所以我知道我必须对多少个独特的组进行计算。 谢谢你。
假设 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)
获取组数。
您可以将格式说明符用作:
df.to_csv('filename_%d.csv'%x, index=False)
你会得到文件名另存为: filename_1.csv
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.