python-根据多个条件计算列

我正在阅读有关基于行为的新计算的博客,其中插入了新的col“ 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,则年龄较大

解决方法:

对于多种情况,您可以仅使用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

相关文章

转载:一文讲述Pandas库的数据读取、数据获取、数据拼接、数...
Pandas是一个开源的第三方Python库,从Numpy和Matplotlib的基...
整体流程登录天池在线编程环境导入pandas和xrld操作EXCEL文件...
 一、numpy小结             二、pandas2.1为...
1、时间偏移DateOffset对象DateOffset类似于时间差Timedelta...
1、pandas内置样式空值高亮highlight_null最大最小值高亮背景...