簡體   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