我下面有一个熊猫数据框:
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
提前谢谢。
答案 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)