關(guān)于dataframe排序 pd.rank()
更新時間:2024年09月10日 09:57:25 作者:羊羊豬
pandas.DataFrame.rank方法支持不同的排序方式,如按行或列、升序或降序等,主要參數(shù)包括axis控制按行或列排名,method定義相同值的處理方式,numeric_only指定是否僅對數(shù)字列排序,na_option設(shè)置NaN值的排序方法,ascending確定排序方向,pct決定是否以百分比形式展示排名
pandas.DataFrame.rank
DataFrame.rank(axis=0, method=‘a(chǎn)verage', numeric_only=NoDefault.no_default, na_option=‘keep', ascending=True, pct=False)
參數(shù)解釋
- axis: axis=0為按行排名,axis=1為按列排名
- method: 如何對具有相同價值(即領(lǐng)帶)的記錄組進行排序:
- numeric_only: 對于DataFrame對象,如果設(shè)置為True,則只對數(shù)字列排序。
- na_option: 如何對NaN值進行排序:
- ascending: 元素按升序/降序排列
- pct: 是否以百分比形式顯示返回的排名。
Example:
df = pd.DataFrame(data={'Animal': ['cat', 'penguin', 'dog',
'spider', 'snake'],
'Number_legs': [4, 2, 4, 8, np.nan]})
method: {‘a(chǎn)verage', ‘min', ‘max', ‘first', ‘dense'}, default ‘a(chǎn)verage'- average: 組里的平均排名
- min: 組里的最低排名
- max: 組里的最高排名
- first: 按照他們在數(shù)組中出現(xiàn)的順序排列
- dense: 就像’ min '一樣,但是在組之間rank總是增加1。
df['method_average'] = df['Number_legs'].rank(method='average') df['method_min'] = df['Number_legs'].rank(method='min') df['method_max'] = df['Number_legs'].rank(method='max') df['method_first'] = df['Number_legs'].rank(method='first') df['method_dense'] = df['Number_legs'].rank(method='dense')

na_option: {‘keep', ‘top', ‘bottom'}, default ‘keep'- keep: 空值排序仍為空值
- top: 排序放在第一位
- bottom: 排在最后一位
df['na_keep'] = df['Number_legs'].rank(na_option='keep') df['na_top'] = df['Number_legs'].rank(na_option='top') df['na_bottom'] = df['Number_legs'].rank(na_option='bottom')

ascending: 升序為True, 降序為False
df['asc_True'] = df['Number_legs'].rank(method='min', ascending=True) df['asc_False'] = df['Number_legs'].rank(method='min', ascending=False)

pct: 是否顯示百分比
df['pct_True'] = df['Number_legs'].rank(method='min', pct=True) df['pct_False'] = df['Number_legs'].rank(method='min', pct=False)

分組排序
pandas.core.groupby.GroupBy.rank 官方文檔
Example:
df = pd.DataFrame(
{"group": ["a", "a", "a", "a", "a", "b", "b", "b", "b", "b"],
"value": [2, 4, 2, 3, 5, 1, 2, 4, 1, 5],}
)
for method in ['average', 'min', 'max', 'dense', 'first']:
df[f'{method}_rank'] = df.groupby('group')['value'].rank(method)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Jupyter notebook 不自動彈出網(wǎng)頁的解決方案
這篇文章主要介紹了Jupyter notebook 不自動彈出網(wǎng)頁的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
Python利用openpyxl操作Excel表格的完整指南
存測試數(shù)據(jù)有時候有大批量的數(shù)據(jù),存到TXT文件里面顯然不是最佳的方式,我們可以存到Excel里面去,下面我們就來看看如何使用Python自動化操作Excel表格吧2026-03-03
基于Python實現(xiàn)高效PPT轉(zhuǎn)圖片工具
在日常工作中,PPT是我們常用的演示工具,但有時候我們需要將PPT的內(nèi)容提取為圖片格式以便于展示或保存,所以本文將用Python實現(xiàn)PPT轉(zhuǎn)PNG工具,希望對大家有所幫助2025-04-04

