【发布时间】:2021-10-12 10:35:17
【问题描述】:
我目前使用 df.rank 对列的值进行百分位排名,如下所示:
import pandas as pd
columns=['Country','Score']
data=[('US',5),('US',3),('US',12),('US',7),('US',47),('US',87),('US',97),
('US',55),('Brazil',15),('Brazil',32),('Brazil',62),('Brazil',71),
('Brazil',7, ('Brazil',57),('Brazil',45),('Brazil',57)]
df=pd.DataFrame(columns=columns,data=data)
df['Rank']=df['Score'].rank(pct=True)
df
Country Score Rank
0 US 5 0.12500
1 US 3 0.06250
2 US 12 0.31250
3 US 7 0.21875
4 US 47 0.56250
5 US 87 0.93750
6 US 97 1.00000
7 US 55 0.62500
8 Brazil 15 0.37500
9 Brazil 32 0.43750
10 Brazil 62 0.81250
11 Brazil 71 0.87500
12 Brazil 7 0.21875
13 Brazil 57 0.71875
14 Brazil 45 0.50000
15 Brazil 57 0.71875
如何仅根据项目所在国家/地区的分数计算百分位排名?因此,美国的商品将仅相对于美国商品进行排名,而巴西的商品将仅相对于巴西商品进行排名?
我的国家/地区比此处显示的多得多,因此单独执行(即df[df.Country=='US']... 或遍历循环似乎不是最有效的方式。
提前致谢!
【问题讨论】:
标签: python pandas dataframe rank