按有序组对熊猫 df 进行排名

时间:2021-04-07 14:04:33

标签: pandas rank

考虑以下预先订购的数据帧

import pandas as pd
df = pd.DataFrame({'Item':['Hat','Necklace','Bag','Bag','Necklace','Hat','Hat','Bag','Bag']})

我想在不影响数据帧的当前顺序的情况下对 Item 列进行密集排名。

desired output

我试过使用

df['bad_rank'] = df['Item'].rank(ascending=False, method='dense').astype(int)

然而,这不是我想要的,因为“帽子”排在第二位,应该排在第一位。

我也编写了一个肮脏的答案,但我很惊讶没有使用排名方法的更简单方法。

ordered_rank = dict(zip(df['Item'].unique(), range(1,len(df['Item'].unique())+1))) 
df['good_rank'] = df['Item'].map(ordered_rank)

有人愿意帮我吗?

0 个答案:

没有答案