更新時(shí)間:2022-10-31 來源:黑馬程序員 瀏覽量:
與字典或Series對(duì)象相比,使用函數(shù)作為分組鍵會(huì)更加靈活,任何一個(gè)被當(dāng)做分組鍵的函數(shù)都會(huì)在各個(gè)索引值上被調(diào)用一次,返回的值會(huì)被用作分組名稱。
創(chuàng)建一個(gè)DataFrame對(duì)象,將其行索引的名稱設(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
如果以行索引名稱的長(zhǎng)度進(jìn)行分組,則長(zhǎng)度相同的行索引名稱會(huì)分為一組,即索引名稱長(zhǎng)度為3的分為一組,長(zhǎng)度為4的分為一組,長(zhǎng)度為5的分為一組,共分成三組。接下來,以行索引名稱的長(zhǎng)度作為分組鍵,將DataFrame對(duì)象的數(shù)據(jù)拆分成三組數(shù)據(jù),具體代碼如下。
In [12]: groupby_obj=df.groupby(len) #使用內(nèi)置函數(shù)len進(jìn)行分組 for group in groupby_obj: # 遍歷分組對(duì)象 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()方法時(shí)傳入了內(nèi)置函數(shù)len(),表明len()函數(shù)會(huì)對(duì)行索引一列執(zhí)行求長(zhǎng)度的操作,調(diào)用len函數(shù)返回的長(zhǎng)度值作為分組名稱,一旦發(fā)現(xiàn)索引名稱的長(zhǎng)度值一樣,就歸類為一組。
從輸出結(jié)果可以看出,索引名稱長(zhǎng)度為3的“Sun”和“Job”歸為第一組,長(zhǎng)度為4的是“Jack”單獨(dú)為第二組,長(zhǎng)度為5的是“Alice”和“Helen”歸為第三組。