繁体   English   中英

如何获取pandas中groupby对象中的组数?

[英]How to get number of groups in a groupby object in pandas?

这会很有用,所以我知道我必须对多少个独特的组进行计算。 谢谢你。

假设 groupby 对象称为dfgroup

[pandas >= 0.23] 简单、快速和 Pandaic: 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM