python - Pandas - 基于每列的前 x% 值,标记为新数字

标签 python pandas dataframe quantile percentile

我在下面有一个 pandas 数据框:

    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:

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)

关于python - Pandas - 基于每列的前 x% 值,标记为新数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52876391/

相关文章:

python - 如果字符串存在于由一个或多个单词动态组成的字典键中,如何将字符串添加到列表中

python - 如何获得 Python 3.7 新的数据类字段类型?

python - 数据框子组中的滚动总和( Pandas )

python - 行值的总和(如果大于零)

python - 如何获取 ANSI 终端中光标的位置?

python - 替换字符串中的空字符串

python - 获取 Pandas DataFrame 中行之间的差异值

python-3.x - 从一个日期时间类型的数据框列创建年、月、日

python - 如何过滤数据帧的两个系列,其中一个系列中列表元素的值为 true

python - 如何统计pandas中DataFrame两列的定义值差的个数?