[英]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.