Pandas 根据两列排序

Pandas ranking order based on two columns

您好专家, 请帮助我获得预期的结果,在我的代码下方给出 我想要排名优先级桶然后寻找计数。

Priority["Rank"] = Priority[["Bucket","Count"]].apply(tuple,axis=1)\
             .rank(method='dense',ascending=False).astype(int)

提前致谢。

你的代码给了我预期的结果。

如果我将列顺序 ["Bucket","Count"] 更改为 ["Count","Bucket"],我可以获得与您当前结果类似的结果 - 所以可能您使用了错误的数据。


最小工作代码:

import pandas as pd

data = {
    'B': [5,5,4,4,3,2,2,1], 
    'C': [60,3,10,2,35,2,2,3],
}

df = pd.DataFrame(data)

df['CB'] = df[['C', 'B']].apply(tuple, axis=1).rank(method='dense', ascending=False).astype(int)
df['BC'] = df[['B', 'C']].apply(tuple, axis=1).rank(method='dense', ascending=False).astype(int)

print(df)

结果:

   B   C  CB  BC
0  5  60   1   1
1  5   3   4   2
2  4  10   3   3
3  4   2   6   4
4  3  35   2   5
5  2   2   7   6
6  2   2   7   6
7  1   3   5   7