Pandas按国家分组计算分数列条件百分位排名的高效实现方法问询
实现分组百分位排名的高效方案
直接使用pandas原生的分组排名逻辑即可,属于矢量化操作,即使国家数量很多也能保持极高的执行效率,无需手动循环或逐个筛选国家处理。
实现代码
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['Country_Rank'] = df.groupby('Country')['Score'].rank(pct=True)
可选排名规则调整
可以通过修改rank方法的method参数适配不同的并列值处理逻辑:
method='average':默认规则,相同分数的样本取平均排名method='min':相同分数的样本取该组的最小排名method='max':相同分数的样本取该组的最大排名method='first':相同分数的样本按出现先后顺序排名,无重复排名
内容的提问来源于stack exchange,提问作者Chris L
相关产品推荐
相关产品推荐

