本篇內(nèi)容介紹了“Pandas中怎么分組再取N項(xiàng)”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)專注于無極網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供無極營銷型網(wǎng)站建設(shè),無極網(wǎng)站制作、無極網(wǎng)頁設(shè)計(jì)、無極網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)公司服務(wù),打造無極網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供無極網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
在 pandas 中,DataFrame 是我們經(jīng)常用到的工具。有時候,我們可能會需要對數(shù)據(jù)按某個字段進(jìn)行分組,然后每個組取N項(xiàng)。例如:
現(xiàn)在,我想每個職位任取三個用戶。
相信有同學(xué)會使用 for 循環(huán),依次循環(huán)每一行,每個職位選3個,存入一個臨時的列表里面。循環(huán)完成以后再轉(zhuǎn)成一個新的 DataFrame。但這個方式顯然不夠智能。
那么,我們有沒有什么辦法能夠不使用循環(huán)就做到這一步呢?也許有同學(xué)想到了使用 groupby。我們來看看效果。
看起來僅僅是統(tǒng)計(jì)了每個職位的數(shù)量。那么,如何才能保留所有字段呢?
實(shí)際上我們可以把.size()改成.head(3):
看起來這里的.head(3)似乎沒有什么作用。這個時候,我們思考一下 Python 里面,如果要使用itertools.groupby,官方文檔里面有這樣一段話:
Generally, the iterable needs to already be sorted on the same key function.
如下圖所示:
這段話告訴我們,要使用itertools.groupby,我們需要提前對被分組的字段進(jìn)行排序。
那么,我們試一試在如果提前對 DataFrame 進(jìn)行排序,然后再 groupby 會怎么樣:
成功了。每個職位都取了3個。
可能大家發(fā)現(xiàn)最左邊的索引是亂序,看起來不好看。那么我們還可以重設(shè)一下索引:
“Pandas中怎么分組再取N項(xiàng)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!