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