вычислять столбцы на основе нескольких условий - PullRequest
0 голосов
/ 03 мая 2018

Я читал блог для новых вычислений на основе условий, где вставлен новый столбец 'category'.

data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 
        'age': [42, 52, 36, 24, 73], 
        'preTestScore': [4, 24, 31, 2, 3],
        'postTestScore': [25, 94, 57, 62, 70]}
df = pd.DataFrame(data, columns = ['name', 'age', 'preTestScore', 'postTestScore'])
df['category'] = np.where(df['age']>=50, 'yes', 'no')

как это можно распространить на несколько условий, таких как если возраст менее 20 лет, то ребенок; если между 21 и 40, то молодые; если выше 40, то старый

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Вы можете использовать pd.cut (Кстати, 40 не старик: - ()

pd.cut(df.age,bins=[0,20,39,np.inf],labels=['kid','young','old'])
Out[179]: 
0      old
1      old
2    young
3    young
4      old
Name: age, dtype: category
Categories (3, object): [kid < young < old]
0 голосов
/ 03 мая 2018

Для нескольких условий вы можете просто использовать numpy.select вместо numpy.where

import numpy as np

cond = [df['age'] < 20, df['age'].between(20, 39), df['age'] >= 40]
choice = ['kid', 'young', 'old']

df['category'] = np.select(cond, choice)
#    name  age  preTestScore  postTestScore category
#0  Jason   42             4             25      old
#1  Molly   52            24             94      old
#2   Tina   36            31             57    young
#3   Jake   24             2             62    young
#4    Amy   73             3             70      old
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...