代码之家  ›  专栏  ›  技术社区  ›  Sai Kumar

根据特定条件指定新列

  •  0
  • Sai Kumar  · 技术社区  · 6 年前

    我有一个数据帧,我需要一种方法来应用不同的条件。如果点<20,则 very low low medium 积分>150 high

         Points
    0     10
    1     08
    2     25
    3     40
    4     90
    5    150
    6    350
    

    期望输出:

         Points     new
    0     10     very low
    1     08     very low
    2     25          low
    3     40          low
    4     90       medium
    5    150       medium
    6    350         High
    

    我能用一个函数和几个if条件来解决这个问题,但我正在寻找一个更好的方法。

    2 回复  |  直到 6 年前
        1
  •  3
  •   BENY    6 年前

    你可以使用 cut

    pd.cut(df.Points,bins=[0,20,80,150,999],labels=['very low','low','medium','High'])
    Out[64]: 
    0    very low
    1    very low
    2         low
    3         low
    4      medium
    5      medium
    6        High
    Name: Points, dtype: category
    #df['new']=pd.cut(df.Points,bins=[0,20,80,150,999],labels=['very low','low','medium','High'])
    
        2
  •  2
  •   sacuL    6 年前

    np.select

    import numpy as np
    
    conds = [df.Points < 20, df.Points < 80, df.Points <=150]
    
    choices = ['very low', 'low', 'medium']
    
    df['new'] = np.select(conds, choices, default = 'high')
    
    >>> df
       Points       new
    0      10  very low
    1       8  very low
    2      25       low
    3      40       low
    4      90    medium
    5     150    medium
    6     350      high
    

    numpy ,您可以使用 pd.np

    df['new'] = pd.np.select(conds, choices, default = 'high')