назначить новый столбец на основе определенных условий - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть фрейм данных, и мне нужен способ применить к нему различные условия.Если точки <20, то <code>very low точки> 20 и <80, тогда <code>low точки> 80 и меньше, чем <= 150 <code>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

Я смог решить ее с помощью функции и нескольких условий, но я ищу лучший подход для панд.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Использование 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')
0 голосов
/ 10 сентября 2018

Вы можете использовать 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'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...