Python Pandas-根据列值对输入值进行排序

Python Pandas-根据列值对输入值进行排序,python,pandas,percentile,argmax,Python,Pandas,Percentile,Argmax,需要帮助根据输入值分配等级/变量,以及百分位数的列值在哪里 例如: 以下是示例数据: 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

需要帮助根据输入值分配等级/变量,以及百分位数的列值在哪里 例如:

以下是示例数据:

    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]
(如果有更好的表示方法,可以更改此设置)

我尝试过使用排序值(在使用apply函数时),但无法确定最小/最大条件。此字段有100k+行


提前感谢。

您可以使用
np。选择
执行此操作:

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

谢谢斯科特·波士顿。工作得很好。我在字典中添加了条件和选项,使用了pd.eval和np。select@Sharif我想看看你的解决方案,你介意贴出来吗。我总是从堆栈溢出中学到一些东西。下面是我的代码片段:
code levels={“df['0.00']==df[value]:7,”(df['0.00']=df[value]):5,”(df['0.68']=df[value]):3,“(df['1.00']==df[value]:1,}condlist=]choicelist=[]表示键,值在levels.items()中:condlist.append(pd.eval(key))choicelist.append(value)df[target\u col]=np.select(condlist,choicelist)
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