首页 > 解决方案 > 根据行中值的百分位排名对数据框进行评分 - Python

问题描述

我在 python 中有一个数据框,我想创建一个新列来根据每行的百分位排名对其进行评分。我已经尝试过apply,但无法让它工作。

所以从根本上说,我想检查一个值(.rank 或 .quantile)的百分位数排名,如果它位于前 20%(相对于列中的所有值)分配 100% 的点(p = 100),如果它在前 40% 中,则获得 50% (0.5 * p) 的分数,否则不得分 (0 * p)。

任何帮助,将不胜感激!谢谢你。

标签: pythonpandasnumpy

解决方案


假设您有一个包含每行排名的列排名。首先将一列点初始化为 0,然后分配相应的值。 注意:顺序很重要

df['points']=0
df.loc[df['rank']/len(df['rank'])<=0.40,'points'] = 50*p
df.loc[df['rank']/len(df['rank'])<=0.20,'points'] = 100*p

推荐阅读