Python 熊猫-基于每列的顶部x%值,标记为新数字

Python 熊猫-基于每列的顶部x%值,标记为新数字,python,pandas,dataframe,quantile,percentile,Python,Pandas,Dataframe,Quantile,Percentile,我在下面有一个数据框: df name value 0 Jack 3 1 Luke 3 2 Mark 2 3 Chris 1 4 Ace 10 5 Isaac 8 基于“value”列,我希望将顶部50%的值标记为1,底部50%的值标记为0 希望得到以下结果: Results name value

我在下面有一个数据框:

    df

    name    value    
0   Jack       3      
1   Luke       3      
2   Mark       2      
3   Chris      1      
4   Ace        10
5   Isaac      8
基于“value”列,我希望将顶部50%的值标记为1,底部50%的值标记为0

希望得到以下结果:

    Results

    name    value      percent mark  
0   Jack       3            0
1   Luke       4            1
2   Mark       2            0
3   Chris      1            0
4   Ace        10           1
5   Isaac      8            1

提前Thx。

您可以将一个序列与其中值进行比较,然后将
bool
转换为
int

df['percent_mark'] = (df['value'] > df['value'].median()).astype(int)
对于特定百分比,请使用。例如:

df['percent_mark'] = (df['value'] > df['value'].quantile(0.25)).astype(int)

您还可以使用可能更快的
numpy

import numpy as np
df['percent_mark_50'] = np.where(df.value > df.value.median(), 1, 0)


50%是平均值。是的。但我只是以50%为例,我想做25%或x%。
df['percent_mark_25'] = np.where(df.value > np.percentile(df.value, 25), 1, 0)