python - 根据行中值的百分位排名对数据框进行评分 - Python
问题描述
我在 python 中有一个数据框,我想创建一个新列来根据每行的百分位排名对其进行评分。我已经尝试过apply
,但无法让它工作。
所以从根本上说,我想检查一个值(.rank 或 .quantile)的百分位数排名,如果它位于前 20%(相对于列中的所有值)分配 100% 的点(p = 100),如果它在前 40% 中,则获得 50% (0.5 * p) 的分数,否则不得分 (0 * p)。
任何帮助,将不胜感激!谢谢你。
解决方案
假设您有一个包含每行排名的列排名。首先将一列点初始化为 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
推荐阅读
- python - os.replace() 和 os.rename() 的区别?
- oauth-2.0 - 在 oauth2-proxy 的上游服务中使用访问令牌进行授权?
- arrays - 如果具有相似的 id,请快速将结构模型更改为另一个模型
- java - Apache-Pulsar 模式没有方法 builder()
- node.js - 动态数据库连接续集
- node.js - 有没有办法从 Node fetch 请求公共网站的内部 API?
- keras - 如何训练具有多个值的输出模型
- sql - 按 A 列分组并计算 SQL 中 B 列的值计数
- python - 有没有办法将 fxml 加载到 jython 逻辑代码中?
- r - 我在这个闪亮的仪表板 UI 代码中缺少什么?