df.head()
Win Lose Draw
A1 3.0 5.0 6.0
A2 3.0 4.0 3.0
A3 0.0 6.0 8.0
A4 0.0 10.0 4.0
A5 8.0 2.0 4.0
我想df.rank(method='dense').astype(int)
根据以下条件对数据框进行排名:
获胜->获胜越多,排名越高`
输->如果等级相等,则输掉次数更少/平局次数更多的行的排名会更高Output :
df_rank`
Rank
A1 3 # Has wins equal to A2, but has more losses, so ranked after A2
A2 2
A3 4
A4 5 # Has most number of losses. So ranked last
A5 1 #Has most number of wins
想法是分别对每一列进行排名,用ascending=False
for Win
,Series
tuple的创建以及rank
再次:
a = df.Win.rank(method='dense', ascending=False)
b = df.Lose.rank(method='dense')
df['Rank'] = pd.Series(zip(a, b), index=df.index).rank(method='dense').astype(int)
print (df)
Win Lose Draw Rank
A1 3.0 5.0 6.0 3
A2 3.0 4.0 3.0 2
A3 0.0 6.0 8.0 4
A4 0.0 10.0 4.0 5
A5 8.0 2.0 4.0 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句