更新時間:2022-10-31 來源:黑馬程序員 瀏覽量:
與字典或Series對象相比,使用函數(shù)作為分組鍵會更加靈活,任何一個被當做分組鍵的函數(shù)都會在各個索引值上被調(diào)用一次,返回的值會被用作分組名稱。
創(chuàng)建一個DataFrame對象,將其行索引的名稱設為字符串類型的,具體代碼如下。
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”歸為第三組。