为了账号安全,请及时绑定邮箱和手机立即绑定

根据列值对输入值进行排名

根据列值对输入值进行排名

杨魅力 2023-08-15 17:01:44
需要帮助根据输入值分配排名/变量以及百分位数列值的位置示例:If input value = Min column value --> Rank 1input value between Min column value and P25 column value --> Rank 2input value between P75 column value and Max column value --> Rank 5input value = Max column value --> Rank 6这是示例数据:    date | value | Min  | P25  | P50  | P75  | Max       | output    ---------------------------------------------------    1-Sep| 45    | 12.0 | 28.2 | 48.9 | 85.4 | 98.0      | 3    2-Sep| 63    | 12.0 | 28.2 | 48.9 | 85.4 | 98.0      | 4    3-Sep| 87    | 12.0 | 28.2 | 48.9 | 85.4 | 98.0      | 5    4-Sep| 12    | 12.0 | 28.1 | 48.9 | 85.2 | 98.0      | 1    5-Sep| 89    | 14.2 | 28.8 | 48.9 | 85.8 | 98.0      | 5    6-Sep| 98    | 14.2 | 28.8 | 48.9 | 85.8 | 98.0      | 6    7-Sep| 41    | 14.2 | 28.8 | 48.9 | 85.6 | 97.9      | 3    8-Sep| 22    | 14.2 | 28.8 | 48.9 | 85.6 | 97.9      | 2排名字典(配置)是这样的:([Min:1, P25:2, P50:3, p75:4, Max:5, Max:6]如果有更好的表示方式可以更改)我尝试过使用排序值(同时使用应用函数),但无法找出最小/最大条件。这个 pandas df 有 100k+ 行。
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您可以使用np.select以下方法来执行此操作:


cond1 = df['value'] <= df['Min']

cond2 = df['value'] <= df['P25']

cond3 = df['value'] <= df['P50']

cond4 = df['value'] <= df['P75']

cond5 = df['value'] < df['Max']


df['rank'] = np.select([cond1, cond2, cond3, cond4, cond5], [1,2,3,4,5], 6)


df

输出:


        date  value   Min   P25   P50   P75   Max  output  rank

1      1-Sep   45.0  12.0  28.2  48.9  85.4  98.0     3.0     3

2      2-Sep   63.0  12.0  28.2  48.9  85.4  98.0     4.0     4

3      3-Sep   87.0  12.0  28.2  48.9  85.4  98.0     5.0     5

4      4-Sep   12.0  12.0  28.1  48.9  85.2  98.0     1.0     1

5      5-Sep   89.0  14.2  28.8  48.9  85.8  98.0     5.0     5

6      6-Sep   98.0  14.2  28.8  48.9  85.8  98.0     6.0     6

7      7-Sep   41.0  14.2  28.8  48.9  85.6  97.9     3.0     3

8      8-Sep   22.0  14.2  28.8  48.9  85.6  97.9     2.0     2


查看完整回答
反对 回复 2023-08-15
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信