中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pandas如何實現分組后取第N行

發布時間:2021-03-26 13:54:54 來源:億速云 閱讀:284 作者:小新 欄目:開發技術

這篇文章主要介紹pandas如何實現分組后取第N行,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

目的:

pandas如何實現分組后取第N行

把question_id 對應的user_answer轉成ABCD

solution

dfa=df.groupby('question_id').nth(0).reset_index()
dfa['flag']='A'
dfb=df.groupby('question_id').nth(1).reset_index()
dfb['flag']='B'
dfc=df.groupby('question_id').nth(2).reset_index()
dfc['flag']='C'
dfd=df.groupby('question_id').nth(3).reset_index()
dfd['flag']='D'

resdf=dfa.append([dfb,dfc,dfd])
resdf.sort_values(by='question_id')

result

pandas如何實現分組后取第N行

focus

g.nth(0) 
#同 
g.first()
g.head(1)
g.last()

g.nth(2)
g.nth(-1)

g.nth(0,dropna='any')
g.B.nth(0,dropna='all')
g.groups
g.get_group(134429)
g.discribe()
g.agg([np.mean,np.sum.np,std])

補充:pandas的分組取最大多行并求和函數nlargest()

在pandas庫里面,我們常常關心的是最大的前幾個,比如銷售最好的幾個產品,幾個店,等。之前講到的head(), 能夠看到看到DF里面的前幾行,如果需要看到最大或者最小的幾行就需要先進行排序。max()和min()可以看到最大或者最小值,但是只能看到一個值。

pandas如何實現分組后取第N行

所以我們可以使用nlargest()函數,nlargest()的優點就是能一次看到最大的幾行,而且不需要排序。缺點就是只能看到最大的,看不到最小的。

我們來看看單價排在前十的數據:

pandas如何實現分組后取第N行

單價排在前十的數據

nlargest()的第一個參數就是截取的行數。第二個參數就是依據的列名。

這樣就可以篩選出單價最高的前十行,而且是按照單價從最高到最低進行排列的,所以還是按照之前的索引。

還可以按照total_price來進行排名:

pandas如何實現分組后取第N行

按照total_price排名

nlargest還有一個參數,keep='first'或者'last'。當出現重復值的時候,keep='first',會選取在原始DataFrame里排在前面的,keep='last'則去排后面的。

由于nlagerst()不能去最小的多個值,如果我們一定要使用這個函數進行選取也是可以的.

先設置一個輔助列:

pandas如何實現分組后取第N行

先設置一個輔助列

然后在進行選取:

pandas如何實現分組后取第N行

以輔助列進行選取

當然了,也可以通過head()加上排序進行選取的。

那以前這些操作都可以通過其它函數來進行替代的話,nlargest()有什么必要介紹嗎?或者說學不學這個函數有什么關系嗎?

這就是我們今天要重點介紹的,如果說要選擇不同location_road下的前五名要怎么操作呢?

很多人可能第一反應會想到先分組然后進行max()操作,但是這樣的操作只能選擇最大的一列:

pandas如何實現分組后取第N行

使用max()

但是使用max有一個問題,就是選取的是每一列的最大值,而不是選取最大值的那一行,也就是說只能在選取單列的最大值的時候才是準確的。

這個時候我們就要想到apply和lambda的自定義函數了:

pandas如何實現分組后取第N行

選取多個指標的TOP(N)

這樣就選出了不同loaction_road的price排在前五的行了。

nlargest()函數在這種場景下使用是非常方便的,而且結果也已經默認排好順序了。

還有一些場景下需要計算分組的前幾名,然后在進行求和的,這個我們也可以使用nlargest進行操作:

pandas如何實現分組后取第N行

分組之后進行求和

使用這種方法會出現報錯提示,這個因為在列和索引都存在loaction_road,有重復,系統有警告,在實際使用時可以先改列名再操作。我們也可以換一種方式直接按照索引進行求和,這樣就沒有警告了:

pandas如何實現分組后取第N行

以上是“pandas如何實現分組后取第N行”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奉化市| 应用必备| 阜宁县| 泸定县| 防城港市| 鹿邑县| 承德县| 清镇市| 武义县| 体育| 福州市| 华阴市| 河津市| 龙门县| 云龙县| 专栏| 潮安县| 宜君县| 邯郸市| 蓬莱市| 宁乡县| 封开县| 石首市| 临颍县| 梓潼县| 南江县| 东阿县| 赣州市| 通化县| 敦煌市| 曲靖市| 宜城市| 开化县| 台湾省| 安乡县| 栾川县| 万荣县| 腾冲县| 沧州市| 清远市| 偏关县|