2024-05-14 09:02:47 发布
网友
我在下面有一个数据框:
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
提前打电话。你知道吗
您可以将序列与其中值进行比较,然后将bool转换为int:
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,这可能更快
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)
您可以将序列与其中值进行比较,然后将
bool
转换为int
:对于特定的百分比,请使用^{} 。例如:
您还可以使用
numpy
,这可能更快或者
相关问题 更多 >
编程相关推荐