熊猫-根据每列的最高x%值,将其标记为新数字

时间:2018-10-18 14:32:04

标签: python pandas dataframe

我下面有一个熊猫数据框:

    df

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

基于“值”列,我希望将前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

提前谢谢。

2 个答案:

答案 0 :(得分:2)

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

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

对于特定百分比,请使用pd.Series.quantile。例如:

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

答案 1 :(得分:0)

您还可以使用速度更快的numpy

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

df['percent_mark_25'] = np.where(df.value > np.percentile(df.value, 25), 1, 0)