更新時間:2022-10-31 來源:黑馬程序員 瀏覽量:

與字典或Series對象相比,使用函數(shù)作為分組鍵會更加靈活,任何一個被當做分組鍵的函數(shù)都會在各個索引值上被調(diào)用一次,返回的值會被用作分組名稱。
創(chuàng)建一個DataFrame對象,將其行索引的名稱設(shè)為字符串類型的,具體代碼如下。
In [11]: import pandas as pd
df=pd.DataFrame({'a':[1, 2, 3, 4, 5],
'b':[6, 7, 8, 9, 10],
'c':[5, 4, 3, 2, 1]},
index=['Sun', 'Jack', 'Alice', 'Helen', 'Job']
df
Out[11]:
a b c
Sun 1 6 5
Jack 2 7 4
Alice 3 8 3
Helen 4 9 2
Job 5 10 1 如果以行索引名稱的長度進行分組,則長度相同的行索引名稱會分為一組,即索引名稱長度為3的分為一組,長度為4的分為一組,長度為5的分為一組,共分成三組。接下來,以行索引名稱的長度作為分組鍵,將DataFrame對象的數(shù)據(jù)拆分成三組數(shù)據(jù),具體代碼如下。
In [12]: groupby_obj=df.groupby(len) #使用內(nèi)置函數(shù)len進行分組 for group in groupby_obj: # 遍歷分組對象 print(group) Out[12]: (3, a b c Sun 1 6 5 Job 5 10 1) (4, a b c Jack 2 7 4) (5, a b c Alice 3 8 3 Helen 4 9 2)
上述示例中,在調(diào)用groupby()方法時傳入了內(nèi)置函數(shù)len(),表明len()函數(shù)會對行索引一列執(zhí)行求長度的操作,調(diào)用len函數(shù)返回的長度值作為分組名稱,一旦發(fā)現(xiàn)索引名稱的長度值一樣,就歸類為一組。
從輸出結(jié)果可以看出,索引名稱長度為3的“Sun”和“Job”歸為第一組,長度為4的是“Jack”單獨為第二組,長度為5的是“Alice”和“Helen”歸為第三組。