根据每列的顶部x%值,标记为新的numb

2024-05-14 09:02:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我在下面有一个数据框:

    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

提前打电话。你知道吗


Tags: 数据name标记dfvalueresultschrismark
2条回答

您可以将序列与其中值进行比较,然后将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)

或者

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

相关问题 更多 >

    热门问题