[英]numbering in pandas on incremental order and also without considering a column?
輸入數據框:
load1 = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
})
Rank
:按降序對 B 值進行排序,並按遞增順序從 1 開始排序
Rank_without_a_column
: 將降序的第一列排序為 B 並在遞增順序上給出從 1 開始的排名
Exact_Rank
:給出正確的排名,如預期輸出的准確排名所示
Exact_Rank_Without_a_column
:
預期輸出:
A B Rank Rank_without_a_column Exact_Rank Exact_Rank_Without_a_column
0 a 5 1 Null 1 Null
1 b 5 2 1 1 1
2 c 5 3 2 1 1
3 d 4 4 3 2 2
4 e 4 5 4 2 2
5 f 4 6 5 2 2
您需要一系列排名方法:
load1.sort_values('B',ascending=False,inplace=True)
load1['Rank'] = load1['B'].rank(ascending=False,method='first').astype(int)
load1.reset_index(drop=True,inplace=True)
load1.loc[1:,'Rank_without_a_column'] = load1.loc[1:,'B'].rank(ascending=False,method='first')
load1['Exact_Rank'] = load1['B'].rank(ascending=False,method='dense').astype(int)
load1.loc[1:,'Exact_Rank_Without_a_column'] = load1.loc[1:,'Exact_Rank'].rank(ascending=True,method='dense')
load1
A B Rank Rank_without_a_column Exact_Rank Exact_Rank_Without_a_column
0 b 5 1 NaN 1 NaN
1 d 5 2 1.0 1 1.0
2 e 5 3 2.0 1 1.0
3 a 4 4 3.0 2 2.0
4 c 4 5 4.0 2 2.0
5 f 4 6 5.0 2 2.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.